diff --git a/gen/go/attribution/v1/attribution.pb.go b/gen/go/attribution/v1/attribution.pb.go index ba45437..2cbfa1f 100644 --- a/gen/go/attribution/v1/attribution.pb.go +++ b/gen/go/attribution/v1/attribution.pb.go @@ -124,6 +124,104 @@ func (ReportExportFormat) EnumDescriptor() ([]byte, []int) { return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{1} } +type AttributionSubjectKind int32 + +const ( + AttributionSubjectKind_ATTRIBUTION_SUBJECT_KIND_UNSPECIFIED AttributionSubjectKind = 0 + AttributionSubjectKind_ATTRIBUTION_SUBJECT_KIND_DEAL AttributionSubjectKind = 1 + AttributionSubjectKind_ATTRIBUTION_SUBJECT_KIND_OBJECTIVE AttributionSubjectKind = 2 +) + +// Enum value maps for AttributionSubjectKind. +var ( + AttributionSubjectKind_name = map[int32]string{ + 0: "ATTRIBUTION_SUBJECT_KIND_UNSPECIFIED", + 1: "ATTRIBUTION_SUBJECT_KIND_DEAL", + 2: "ATTRIBUTION_SUBJECT_KIND_OBJECTIVE", + } + AttributionSubjectKind_value = map[string]int32{ + "ATTRIBUTION_SUBJECT_KIND_UNSPECIFIED": 0, + "ATTRIBUTION_SUBJECT_KIND_DEAL": 1, + "ATTRIBUTION_SUBJECT_KIND_OBJECTIVE": 2, + } +) + +func (x AttributionSubjectKind) Enum() *AttributionSubjectKind { + p := new(AttributionSubjectKind) + *p = x + return p +} + +func (x AttributionSubjectKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AttributionSubjectKind) Descriptor() protoreflect.EnumDescriptor { + return file_attribution_v1_attribution_proto_enumTypes[2].Descriptor() +} + +func (AttributionSubjectKind) Type() protoreflect.EnumType { + return &file_attribution_v1_attribution_proto_enumTypes[2] +} + +func (x AttributionSubjectKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AttributionSubjectKind.Descriptor instead. +func (AttributionSubjectKind) EnumDescriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{2} +} + +type AttributionSignalType int32 + +const ( + AttributionSignalType_ATTRIBUTION_SIGNAL_TYPE_UNSPECIFIED AttributionSignalType = 0 + AttributionSignalType_ATTRIBUTION_SIGNAL_TYPE_OBJECTIVE_COMPLETED AttributionSignalType = 1 + AttributionSignalType_ATTRIBUTION_SIGNAL_TYPE_TRACE_COMPLETED AttributionSignalType = 2 +) + +// Enum value maps for AttributionSignalType. +var ( + AttributionSignalType_name = map[int32]string{ + 0: "ATTRIBUTION_SIGNAL_TYPE_UNSPECIFIED", + 1: "ATTRIBUTION_SIGNAL_TYPE_OBJECTIVE_COMPLETED", + 2: "ATTRIBUTION_SIGNAL_TYPE_TRACE_COMPLETED", + } + AttributionSignalType_value = map[string]int32{ + "ATTRIBUTION_SIGNAL_TYPE_UNSPECIFIED": 0, + "ATTRIBUTION_SIGNAL_TYPE_OBJECTIVE_COMPLETED": 1, + "ATTRIBUTION_SIGNAL_TYPE_TRACE_COMPLETED": 2, + } +) + +func (x AttributionSignalType) Enum() *AttributionSignalType { + p := new(AttributionSignalType) + *p = x + return p +} + +func (x AttributionSignalType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AttributionSignalType) Descriptor() protoreflect.EnumDescriptor { + return file_attribution_v1_attribution_proto_enumTypes[3].Descriptor() +} + +func (AttributionSignalType) Type() protoreflect.EnumType { + return &file_attribution_v1_attribution_proto_enumTypes[3] +} + +func (x AttributionSignalType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AttributionSignalType.Descriptor instead. +func (AttributionSignalType) EnumDescriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{3} +} + type AttributionQuery struct { state protoimpl.MessageState `protogen:"open.v1"` WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` @@ -133,6 +231,7 @@ type AttributionQuery struct { StartTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` EndTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` IncludeTeamRollups bool `protobuf:"varint,7,opt,name=include_team_rollups,json=includeTeamRollups,proto3" json:"include_team_rollups,omitempty"` + ObjectiveIds []string `protobuf:"bytes,8,rep,name=objective_ids,json=objectiveIds,proto3" json:"objective_ids,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -216,6 +315,13 @@ func (x *AttributionQuery) GetIncludeTeamRollups() bool { return false } +func (x *AttributionQuery) GetObjectiveIds() []string { + if x != nil { + return x.ObjectiveIds + } + return nil +} + type DealContext struct { state protoimpl.MessageState `protogen:"open.v1"` DealId string `protobuf:"bytes,1,opt,name=deal_id,json=dealId,proto3" json:"deal_id,omitempty"` @@ -332,6 +438,114 @@ func (x *DealContext) GetUpdatedAt() *timestamppb.Timestamp { return nil } +type ObjectiveContext struct { + state protoimpl.MessageState `protogen:"open.v1"` + ObjectiveId string `protobuf:"bytes,1,opt,name=objective_id,json=objectiveId,proto3" json:"objective_id,omitempty"` + AgentId string `protobuf:"bytes,2,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` + Surface string `protobuf:"bytes,3,opt,name=surface,proto3" json:"surface,omitempty"` + Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + State string `protobuf:"bytes,6,opt,name=state,proto3" json:"state,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CompletedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ObjectiveContext) Reset() { + *x = ObjectiveContext{} + mi := &file_attribution_v1_attribution_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ObjectiveContext) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectiveContext) ProtoMessage() {} + +func (x *ObjectiveContext) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectiveContext.ProtoReflect.Descriptor instead. +func (*ObjectiveContext) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{2} +} + +func (x *ObjectiveContext) GetObjectiveId() string { + if x != nil { + return x.ObjectiveId + } + return "" +} + +func (x *ObjectiveContext) GetAgentId() string { + if x != nil { + return x.AgentId + } + return "" +} + +func (x *ObjectiveContext) GetSurface() string { + if x != nil { + return x.Surface + } + return "" +} + +func (x *ObjectiveContext) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ObjectiveContext) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ObjectiveContext) GetState() string { + if x != nil { + return x.State + } + return "" +} + +func (x *ObjectiveContext) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ObjectiveContext) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *ObjectiveContext) GetCompletedAt() *timestamppb.Timestamp { + if x != nil { + return x.CompletedAt + } + return nil +} + type TraceTouchpoint struct { state protoimpl.MessageState `protogen:"open.v1"` Trace *v1.TraceSummary `protobuf:"bytes,1,opt,name=trace,proto3" json:"trace,omitempty"` @@ -342,7 +556,7 @@ type TraceTouchpoint struct { func (x *TraceTouchpoint) Reset() { *x = TraceTouchpoint{} - mi := &file_attribution_v1_attribution_proto_msgTypes[2] + mi := &file_attribution_v1_attribution_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -354,7 +568,7 @@ func (x *TraceTouchpoint) String() string { func (*TraceTouchpoint) ProtoMessage() {} func (x *TraceTouchpoint) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[2] + mi := &file_attribution_v1_attribution_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -367,7 +581,7 @@ func (x *TraceTouchpoint) ProtoReflect() protoreflect.Message { // Deprecated: Use TraceTouchpoint.ProtoReflect.Descriptor instead. func (*TraceTouchpoint) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{2} + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{3} } func (x *TraceTouchpoint) GetTrace() *v1.TraceSummary { @@ -403,7 +617,7 @@ type UsageTouchpoint struct { func (x *UsageTouchpoint) Reset() { *x = UsageTouchpoint{} - mi := &file_attribution_v1_attribution_proto_msgTypes[3] + mi := &file_attribution_v1_attribution_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -415,7 +629,7 @@ func (x *UsageTouchpoint) String() string { func (*UsageTouchpoint) ProtoMessage() {} func (x *UsageTouchpoint) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[3] + mi := &file_attribution_v1_attribution_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -428,7 +642,7 @@ func (x *UsageTouchpoint) ProtoReflect() protoreflect.Message { // Deprecated: Use UsageTouchpoint.ProtoReflect.Descriptor instead. func (*UsageTouchpoint) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{3} + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{4} } func (x *UsageTouchpoint) GetRecordId() string { @@ -525,7 +739,7 @@ type AgentSummary struct { func (x *AgentSummary) Reset() { *x = AgentSummary{} - mi := &file_attribution_v1_attribution_proto_msgTypes[4] + mi := &file_attribution_v1_attribution_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -537,7 +751,7 @@ func (x *AgentSummary) String() string { func (*AgentSummary) ProtoMessage() {} func (x *AgentSummary) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[4] + mi := &file_attribution_v1_attribution_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -550,7 +764,7 @@ func (x *AgentSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentSummary.ProtoReflect.Descriptor instead. func (*AgentSummary) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{4} + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{5} } func (x *AgentSummary) GetAgentId() string { @@ -629,7 +843,7 @@ type TeamSummary struct { func (x *TeamSummary) Reset() { *x = TeamSummary{} - mi := &file_attribution_v1_attribution_proto_msgTypes[5] + mi := &file_attribution_v1_attribution_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -641,7 +855,7 @@ func (x *TeamSummary) String() string { func (*TeamSummary) ProtoMessage() {} func (x *TeamSummary) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[5] + mi := &file_attribution_v1_attribution_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -654,7 +868,7 @@ func (x *TeamSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamSummary.ProtoReflect.Descriptor instead. func (*TeamSummary) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{5} + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{6} } func (x *TeamSummary) GetTeamId() string { @@ -692,36 +906,35 @@ func (x *TeamSummary) GetAgentIds() []string { return nil } -type DealAttribution struct { - state protoimpl.MessageState `protogen:"open.v1"` - Deal *DealContext `protobuf:"bytes,1,opt,name=deal,proto3" json:"deal,omitempty"` - TraceTouchpoints []*TraceTouchpoint `protobuf:"bytes,2,rep,name=trace_touchpoints,json=traceTouchpoints,proto3" json:"trace_touchpoints,omitempty"` - UsageTouchpoints []*UsageTouchpoint `protobuf:"bytes,3,rep,name=usage_touchpoints,json=usageTouchpoints,proto3" json:"usage_touchpoints,omitempty"` - AgentSummaries []*AgentSummary `protobuf:"bytes,4,rep,name=agent_summaries,json=agentSummaries,proto3" json:"agent_summaries,omitempty"` - TeamSummaries []*TeamSummary `protobuf:"bytes,5,rep,name=team_summaries,json=teamSummaries,proto3" json:"team_summaries,omitempty"` - TotalAttributedRevenueUsd float64 `protobuf:"fixed64,6,opt,name=total_attributed_revenue_usd,json=totalAttributedRevenueUsd,proto3" json:"total_attributed_revenue_usd,omitempty"` - TotalAttributedCostUsd float64 `protobuf:"fixed64,7,opt,name=total_attributed_cost_usd,json=totalAttributedCostUsd,proto3" json:"total_attributed_cost_usd,omitempty"` - UnattributedRevenueUsd float64 `protobuf:"fixed64,8,opt,name=unattributed_revenue_usd,json=unattributedRevenueUsd,proto3" json:"unattributed_revenue_usd,omitempty"` - UnattributedCostUsd float64 `protobuf:"fixed64,9,opt,name=unattributed_cost_usd,json=unattributedCostUsd,proto3" json:"unattributed_cost_usd,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache +type ObjectiveAgentSummary struct { + state protoimpl.MessageState `protogen:"open.v1"` + AgentId string `protobuf:"bytes,1,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` + AttributionWeight float64 `protobuf:"fixed64,2,opt,name=attribution_weight,json=attributionWeight,proto3" json:"attribution_weight,omitempty"` + AttributedOutcomeCount float64 `protobuf:"fixed64,3,opt,name=attributed_outcome_count,json=attributedOutcomeCount,proto3" json:"attributed_outcome_count,omitempty"` + TotalCostUsd float64 `protobuf:"fixed64,4,opt,name=total_cost_usd,json=totalCostUsd,proto3" json:"total_cost_usd,omitempty"` + TraceCount int32 `protobuf:"varint,5,opt,name=trace_count,json=traceCount,proto3" json:"trace_count,omitempty"` + UsageCount int32 `protobuf:"varint,6,opt,name=usage_count,json=usageCount,proto3" json:"usage_count,omitempty"` + TraceIds []string `protobuf:"bytes,7,rep,name=trace_ids,json=traceIds,proto3" json:"trace_ids,omitempty"` + UsageRecordIds []string `protobuf:"bytes,8,rep,name=usage_record_ids,json=usageRecordIds,proto3" json:"usage_record_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *DealAttribution) Reset() { - *x = DealAttribution{} - mi := &file_attribution_v1_attribution_proto_msgTypes[6] +func (x *ObjectiveAgentSummary) Reset() { + *x = ObjectiveAgentSummary{} + mi := &file_attribution_v1_attribution_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *DealAttribution) String() string { +func (x *ObjectiveAgentSummary) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DealAttribution) ProtoMessage() {} +func (*ObjectiveAgentSummary) ProtoMessage() {} -func (x *DealAttribution) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[6] +func (x *ObjectiveAgentSummary) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -732,101 +945,93 @@ func (x *DealAttribution) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DealAttribution.ProtoReflect.Descriptor instead. -func (*DealAttribution) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{6} -} - -func (x *DealAttribution) GetDeal() *DealContext { - if x != nil { - return x.Deal - } - return nil +// Deprecated: Use ObjectiveAgentSummary.ProtoReflect.Descriptor instead. +func (*ObjectiveAgentSummary) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{7} } -func (x *DealAttribution) GetTraceTouchpoints() []*TraceTouchpoint { +func (x *ObjectiveAgentSummary) GetAgentId() string { if x != nil { - return x.TraceTouchpoints + return x.AgentId } - return nil + return "" } -func (x *DealAttribution) GetUsageTouchpoints() []*UsageTouchpoint { +func (x *ObjectiveAgentSummary) GetAttributionWeight() float64 { if x != nil { - return x.UsageTouchpoints + return x.AttributionWeight } - return nil + return 0 } -func (x *DealAttribution) GetAgentSummaries() []*AgentSummary { +func (x *ObjectiveAgentSummary) GetAttributedOutcomeCount() float64 { if x != nil { - return x.AgentSummaries + return x.AttributedOutcomeCount } - return nil + return 0 } -func (x *DealAttribution) GetTeamSummaries() []*TeamSummary { +func (x *ObjectiveAgentSummary) GetTotalCostUsd() float64 { if x != nil { - return x.TeamSummaries + return x.TotalCostUsd } - return nil + return 0 } -func (x *DealAttribution) GetTotalAttributedRevenueUsd() float64 { +func (x *ObjectiveAgentSummary) GetTraceCount() int32 { if x != nil { - return x.TotalAttributedRevenueUsd + return x.TraceCount } return 0 } -func (x *DealAttribution) GetTotalAttributedCostUsd() float64 { +func (x *ObjectiveAgentSummary) GetUsageCount() int32 { if x != nil { - return x.TotalAttributedCostUsd + return x.UsageCount } return 0 } -func (x *DealAttribution) GetUnattributedRevenueUsd() float64 { +func (x *ObjectiveAgentSummary) GetTraceIds() []string { if x != nil { - return x.UnattributedRevenueUsd + return x.TraceIds } - return 0 + return nil } -func (x *DealAttribution) GetUnattributedCostUsd() float64 { +func (x *ObjectiveAgentSummary) GetUsageRecordIds() []string { if x != nil { - return x.UnattributedCostUsd + return x.UsageRecordIds } - return 0 + return nil } -type AttributionReport struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Query *AttributionQuery `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` - GeneratedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=generated_at,json=generatedAt,proto3" json:"generated_at,omitempty"` - Deals []*DealAttribution `protobuf:"bytes,4,rep,name=deals,proto3" json:"deals,omitempty"` - AgentSummaries []*AgentSummary `protobuf:"bytes,5,rep,name=agent_summaries,json=agentSummaries,proto3" json:"agent_summaries,omitempty"` - TeamSummaries []*TeamSummary `protobuf:"bytes,6,rep,name=team_summaries,json=teamSummaries,proto3" json:"team_summaries,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache +type ObjectiveTeamSummary struct { + state protoimpl.MessageState `protogen:"open.v1"` + TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` + AttributionWeight float64 `protobuf:"fixed64,2,opt,name=attribution_weight,json=attributionWeight,proto3" json:"attribution_weight,omitempty"` + AttributedOutcomeCount float64 `protobuf:"fixed64,3,opt,name=attributed_outcome_count,json=attributedOutcomeCount,proto3" json:"attributed_outcome_count,omitempty"` + TotalCostUsd float64 `protobuf:"fixed64,4,opt,name=total_cost_usd,json=totalCostUsd,proto3" json:"total_cost_usd,omitempty"` + AgentIds []string `protobuf:"bytes,5,rep,name=agent_ids,json=agentIds,proto3" json:"agent_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *AttributionReport) Reset() { - *x = AttributionReport{} - mi := &file_attribution_v1_attribution_proto_msgTypes[7] +func (x *ObjectiveTeamSummary) Reset() { + *x = ObjectiveTeamSummary{} + mi := &file_attribution_v1_attribution_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *AttributionReport) String() string { +func (x *ObjectiveTeamSummary) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AttributionReport) ProtoMessage() {} +func (*ObjectiveTeamSummary) ProtoMessage() {} -func (x *AttributionReport) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[7] +func (x *ObjectiveTeamSummary) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -837,80 +1042,184 @@ func (x *AttributionReport) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AttributionReport.ProtoReflect.Descriptor instead. -func (*AttributionReport) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{7} +// Deprecated: Use ObjectiveTeamSummary.ProtoReflect.Descriptor instead. +func (*ObjectiveTeamSummary) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{8} } -func (x *AttributionReport) GetId() string { +func (x *ObjectiveTeamSummary) GetTeamId() string { if x != nil { - return x.Id + return x.TeamId } return "" } -func (x *AttributionReport) GetQuery() *AttributionQuery { +func (x *ObjectiveTeamSummary) GetAttributionWeight() float64 { if x != nil { - return x.Query + return x.AttributionWeight } - return nil + return 0 } -func (x *AttributionReport) GetGeneratedAt() *timestamppb.Timestamp { +func (x *ObjectiveTeamSummary) GetAttributedOutcomeCount() float64 { if x != nil { - return x.GeneratedAt + return x.AttributedOutcomeCount } - return nil + return 0 } -func (x *AttributionReport) GetDeals() []*DealAttribution { +func (x *ObjectiveTeamSummary) GetTotalCostUsd() float64 { if x != nil { - return x.Deals + return x.TotalCostUsd + } + return 0 +} + +func (x *ObjectiveTeamSummary) GetAgentIds() []string { + if x != nil { + return x.AgentIds } return nil } -func (x *AttributionReport) GetAgentSummaries() []*AgentSummary { +type DealAttribution struct { + state protoimpl.MessageState `protogen:"open.v1"` + Deal *DealContext `protobuf:"bytes,1,opt,name=deal,proto3" json:"deal,omitempty"` + TraceTouchpoints []*TraceTouchpoint `protobuf:"bytes,2,rep,name=trace_touchpoints,json=traceTouchpoints,proto3" json:"trace_touchpoints,omitempty"` + UsageTouchpoints []*UsageTouchpoint `protobuf:"bytes,3,rep,name=usage_touchpoints,json=usageTouchpoints,proto3" json:"usage_touchpoints,omitempty"` + AgentSummaries []*AgentSummary `protobuf:"bytes,4,rep,name=agent_summaries,json=agentSummaries,proto3" json:"agent_summaries,omitempty"` + TeamSummaries []*TeamSummary `protobuf:"bytes,5,rep,name=team_summaries,json=teamSummaries,proto3" json:"team_summaries,omitempty"` + TotalAttributedRevenueUsd float64 `protobuf:"fixed64,6,opt,name=total_attributed_revenue_usd,json=totalAttributedRevenueUsd,proto3" json:"total_attributed_revenue_usd,omitempty"` + TotalAttributedCostUsd float64 `protobuf:"fixed64,7,opt,name=total_attributed_cost_usd,json=totalAttributedCostUsd,proto3" json:"total_attributed_cost_usd,omitempty"` + UnattributedRevenueUsd float64 `protobuf:"fixed64,8,opt,name=unattributed_revenue_usd,json=unattributedRevenueUsd,proto3" json:"unattributed_revenue_usd,omitempty"` + UnattributedCostUsd float64 `protobuf:"fixed64,9,opt,name=unattributed_cost_usd,json=unattributedCostUsd,proto3" json:"unattributed_cost_usd,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DealAttribution) Reset() { + *x = DealAttribution{} + mi := &file_attribution_v1_attribution_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DealAttribution) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DealAttribution) ProtoMessage() {} + +func (x *DealAttribution) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DealAttribution.ProtoReflect.Descriptor instead. +func (*DealAttribution) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{9} +} + +func (x *DealAttribution) GetDeal() *DealContext { + if x != nil { + return x.Deal + } + return nil +} + +func (x *DealAttribution) GetTraceTouchpoints() []*TraceTouchpoint { + if x != nil { + return x.TraceTouchpoints + } + return nil +} + +func (x *DealAttribution) GetUsageTouchpoints() []*UsageTouchpoint { + if x != nil { + return x.UsageTouchpoints + } + return nil +} + +func (x *DealAttribution) GetAgentSummaries() []*AgentSummary { if x != nil { return x.AgentSummaries } return nil } -func (x *AttributionReport) GetTeamSummaries() []*TeamSummary { +func (x *DealAttribution) GetTeamSummaries() []*TeamSummary { if x != nil { return x.TeamSummaries } return nil } -type AttributionReportSummary struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Query *AttributionQuery `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` - GeneratedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=generated_at,json=generatedAt,proto3" json:"generated_at,omitempty"` - DealCount int32 `protobuf:"varint,4,opt,name=deal_count,json=dealCount,proto3" json:"deal_count,omitempty"` - AgentCount int32 `protobuf:"varint,5,opt,name=agent_count,json=agentCount,proto3" json:"agent_count,omitempty"` - TeamCount int32 `protobuf:"varint,6,opt,name=team_count,json=teamCount,proto3" json:"team_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache +func (x *DealAttribution) GetTotalAttributedRevenueUsd() float64 { + if x != nil { + return x.TotalAttributedRevenueUsd + } + return 0 } -func (x *AttributionReportSummary) Reset() { - *x = AttributionReportSummary{} - mi := &file_attribution_v1_attribution_proto_msgTypes[8] +func (x *DealAttribution) GetTotalAttributedCostUsd() float64 { + if x != nil { + return x.TotalAttributedCostUsd + } + return 0 +} + +func (x *DealAttribution) GetUnattributedRevenueUsd() float64 { + if x != nil { + return x.UnattributedRevenueUsd + } + return 0 +} + +func (x *DealAttribution) GetUnattributedCostUsd() float64 { + if x != nil { + return x.UnattributedCostUsd + } + return 0 +} + +type ObjectiveOutcomeAttribution struct { + state protoimpl.MessageState `protogen:"open.v1"` + Objective *ObjectiveContext `protobuf:"bytes,1,opt,name=objective,proto3" json:"objective,omitempty"` + TraceTouchpoints []*TraceTouchpoint `protobuf:"bytes,2,rep,name=trace_touchpoints,json=traceTouchpoints,proto3" json:"trace_touchpoints,omitempty"` + UsageTouchpoints []*UsageTouchpoint `protobuf:"bytes,3,rep,name=usage_touchpoints,json=usageTouchpoints,proto3" json:"usage_touchpoints,omitempty"` + AgentSummaries []*ObjectiveAgentSummary `protobuf:"bytes,4,rep,name=agent_summaries,json=agentSummaries,proto3" json:"agent_summaries,omitempty"` + TeamSummaries []*ObjectiveTeamSummary `protobuf:"bytes,5,rep,name=team_summaries,json=teamSummaries,proto3" json:"team_summaries,omitempty"` + TotalAttributedOutcomeCount float64 `protobuf:"fixed64,6,opt,name=total_attributed_outcome_count,json=totalAttributedOutcomeCount,proto3" json:"total_attributed_outcome_count,omitempty"` + TotalAttributedCostUsd float64 `protobuf:"fixed64,7,opt,name=total_attributed_cost_usd,json=totalAttributedCostUsd,proto3" json:"total_attributed_cost_usd,omitempty"` + UnattributedOutcomeCount float64 `protobuf:"fixed64,8,opt,name=unattributed_outcome_count,json=unattributedOutcomeCount,proto3" json:"unattributed_outcome_count,omitempty"` + UnattributedCostUsd float64 `protobuf:"fixed64,9,opt,name=unattributed_cost_usd,json=unattributedCostUsd,proto3" json:"unattributed_cost_usd,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ObjectiveOutcomeAttribution) Reset() { + *x = ObjectiveOutcomeAttribution{} + mi := &file_attribution_v1_attribution_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *AttributionReportSummary) String() string { +func (x *ObjectiveOutcomeAttribution) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AttributionReportSummary) ProtoMessage() {} +func (*ObjectiveOutcomeAttribution) ProtoMessage() {} -func (x *AttributionReportSummary) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[8] +func (x *ObjectiveOutcomeAttribution) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -921,75 +1230,1102 @@ func (x *AttributionReportSummary) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AttributionReportSummary.ProtoReflect.Descriptor instead. -func (*AttributionReportSummary) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{8} +// Deprecated: Use ObjectiveOutcomeAttribution.ProtoReflect.Descriptor instead. +func (*ObjectiveOutcomeAttribution) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{10} } -func (x *AttributionReportSummary) GetId() string { +func (x *ObjectiveOutcomeAttribution) GetObjective() *ObjectiveContext { + if x != nil { + return x.Objective + } + return nil +} + +func (x *ObjectiveOutcomeAttribution) GetTraceTouchpoints() []*TraceTouchpoint { + if x != nil { + return x.TraceTouchpoints + } + return nil +} + +func (x *ObjectiveOutcomeAttribution) GetUsageTouchpoints() []*UsageTouchpoint { + if x != nil { + return x.UsageTouchpoints + } + return nil +} + +func (x *ObjectiveOutcomeAttribution) GetAgentSummaries() []*ObjectiveAgentSummary { + if x != nil { + return x.AgentSummaries + } + return nil +} + +func (x *ObjectiveOutcomeAttribution) GetTeamSummaries() []*ObjectiveTeamSummary { + if x != nil { + return x.TeamSummaries + } + return nil +} + +func (x *ObjectiveOutcomeAttribution) GetTotalAttributedOutcomeCount() float64 { + if x != nil { + return x.TotalAttributedOutcomeCount + } + return 0 +} + +func (x *ObjectiveOutcomeAttribution) GetTotalAttributedCostUsd() float64 { + if x != nil { + return x.TotalAttributedCostUsd + } + return 0 +} + +func (x *ObjectiveOutcomeAttribution) GetUnattributedOutcomeCount() float64 { + if x != nil { + return x.UnattributedOutcomeCount + } + return 0 +} + +func (x *ObjectiveOutcomeAttribution) GetUnattributedCostUsd() float64 { + if x != nil { + return x.UnattributedCostUsd + } + return 0 +} + +type AttributionReport struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Query *AttributionQuery `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + GeneratedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=generated_at,json=generatedAt,proto3" json:"generated_at,omitempty"` + Deals []*DealAttribution `protobuf:"bytes,4,rep,name=deals,proto3" json:"deals,omitempty"` + AgentSummaries []*AgentSummary `protobuf:"bytes,5,rep,name=agent_summaries,json=agentSummaries,proto3" json:"agent_summaries,omitempty"` + TeamSummaries []*TeamSummary `protobuf:"bytes,6,rep,name=team_summaries,json=teamSummaries,proto3" json:"team_summaries,omitempty"` + ObjectiveOutcomes []*ObjectiveOutcomeAttribution `protobuf:"bytes,7,rep,name=objective_outcomes,json=objectiveOutcomes,proto3" json:"objective_outcomes,omitempty"` + ObjectiveAgentSummaries []*ObjectiveAgentSummary `protobuf:"bytes,8,rep,name=objective_agent_summaries,json=objectiveAgentSummaries,proto3" json:"objective_agent_summaries,omitempty"` + ObjectiveTeamSummaries []*ObjectiveTeamSummary `protobuf:"bytes,9,rep,name=objective_team_summaries,json=objectiveTeamSummaries,proto3" json:"objective_team_summaries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AttributionReport) Reset() { + *x = AttributionReport{} + mi := &file_attribution_v1_attribution_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AttributionReport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AttributionReport) ProtoMessage() {} + +func (x *AttributionReport) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AttributionReport.ProtoReflect.Descriptor instead. +func (*AttributionReport) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{11} +} + +func (x *AttributionReport) GetId() string { if x != nil { return x.Id } return "" } -func (x *AttributionReportSummary) GetQuery() *AttributionQuery { +func (x *AttributionReport) GetQuery() *AttributionQuery { if x != nil { return x.Query } return nil } -func (x *AttributionReportSummary) GetGeneratedAt() *timestamppb.Timestamp { +func (x *AttributionReport) GetGeneratedAt() *timestamppb.Timestamp { if x != nil { return x.GeneratedAt } return nil } -func (x *AttributionReportSummary) GetDealCount() int32 { +func (x *AttributionReport) GetDeals() []*DealAttribution { if x != nil { - return x.DealCount + return x.Deals } - return 0 + return nil +} + +func (x *AttributionReport) GetAgentSummaries() []*AgentSummary { + if x != nil { + return x.AgentSummaries + } + return nil +} + +func (x *AttributionReport) GetTeamSummaries() []*TeamSummary { + if x != nil { + return x.TeamSummaries + } + return nil +} + +func (x *AttributionReport) GetObjectiveOutcomes() []*ObjectiveOutcomeAttribution { + if x != nil { + return x.ObjectiveOutcomes + } + return nil +} + +func (x *AttributionReport) GetObjectiveAgentSummaries() []*ObjectiveAgentSummary { + if x != nil { + return x.ObjectiveAgentSummaries + } + return nil +} + +func (x *AttributionReport) GetObjectiveTeamSummaries() []*ObjectiveTeamSummary { + if x != nil { + return x.ObjectiveTeamSummaries + } + return nil +} + +type AttributionReportSummary struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Query *AttributionQuery `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + GeneratedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=generated_at,json=generatedAt,proto3" json:"generated_at,omitempty"` + DealCount int32 `protobuf:"varint,4,opt,name=deal_count,json=dealCount,proto3" json:"deal_count,omitempty"` + AgentCount int32 `protobuf:"varint,5,opt,name=agent_count,json=agentCount,proto3" json:"agent_count,omitempty"` + TeamCount int32 `protobuf:"varint,6,opt,name=team_count,json=teamCount,proto3" json:"team_count,omitempty"` + ObjectiveOutcomeCount int32 `protobuf:"varint,7,opt,name=objective_outcome_count,json=objectiveOutcomeCount,proto3" json:"objective_outcome_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AttributionReportSummary) Reset() { + *x = AttributionReportSummary{} + mi := &file_attribution_v1_attribution_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AttributionReportSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AttributionReportSummary) ProtoMessage() {} + +func (x *AttributionReportSummary) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AttributionReportSummary.ProtoReflect.Descriptor instead. +func (*AttributionReportSummary) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{12} +} + +func (x *AttributionReportSummary) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *AttributionReportSummary) GetQuery() *AttributionQuery { + if x != nil { + return x.Query + } + return nil +} + +func (x *AttributionReportSummary) GetGeneratedAt() *timestamppb.Timestamp { + if x != nil { + return x.GeneratedAt + } + return nil +} + +func (x *AttributionReportSummary) GetDealCount() int32 { + if x != nil { + return x.DealCount + } + return 0 +} + +func (x *AttributionReportSummary) GetAgentCount() int32 { + if x != nil { + return x.AgentCount + } + return 0 +} + +func (x *AttributionReportSummary) GetTeamCount() int32 { + if x != nil { + return x.TeamCount + } + return 0 +} + +func (x *AttributionReportSummary) GetObjectiveOutcomeCount() int32 { + if x != nil { + return x.ObjectiveOutcomeCount + } + return 0 +} + +type AttributionSnapshot struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + OrganizationId string `protobuf:"bytes,3,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` + SubjectKind AttributionSubjectKind `protobuf:"varint,4,opt,name=subject_kind,json=subjectKind,proto3,enum=attribution.v1.AttributionSubjectKind" json:"subject_kind,omitempty"` + SubjectId string `protobuf:"bytes,5,opt,name=subject_id,json=subjectId,proto3" json:"subject_id,omitempty"` + Model AttributionModel `protobuf:"varint,6,opt,name=model,proto3,enum=attribution.v1.AttributionModel" json:"model,omitempty"` + SignalType AttributionSignalType `protobuf:"varint,7,opt,name=signal_type,json=signalType,proto3,enum=attribution.v1.AttributionSignalType" json:"signal_type,omitempty"` + SignalId string `protobuf:"bytes,8,opt,name=signal_id,json=signalId,proto3" json:"signal_id,omitempty"` + WindowStart *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=window_start,json=windowStart,proto3" json:"window_start,omitempty"` + WindowEnd *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=window_end,json=windowEnd,proto3" json:"window_end,omitempty"` + RecordedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=recorded_at,json=recordedAt,proto3" json:"recorded_at,omitempty"` + // Types that are valid to be assigned to Attribution: + // + // *AttributionSnapshot_Deal + // *AttributionSnapshot_ObjectiveOutcome + Attribution isAttributionSnapshot_Attribution `protobuf_oneof:"attribution"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AttributionSnapshot) Reset() { + *x = AttributionSnapshot{} + mi := &file_attribution_v1_attribution_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AttributionSnapshot) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AttributionSnapshot) ProtoMessage() {} + +func (x *AttributionSnapshot) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AttributionSnapshot.ProtoReflect.Descriptor instead. +func (*AttributionSnapshot) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{13} +} + +func (x *AttributionSnapshot) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *AttributionSnapshot) GetWorkspaceId() string { + if x != nil { + return x.WorkspaceId + } + return "" +} + +func (x *AttributionSnapshot) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +func (x *AttributionSnapshot) GetSubjectKind() AttributionSubjectKind { + if x != nil { + return x.SubjectKind + } + return AttributionSubjectKind_ATTRIBUTION_SUBJECT_KIND_UNSPECIFIED +} + +func (x *AttributionSnapshot) GetSubjectId() string { + if x != nil { + return x.SubjectId + } + return "" +} + +func (x *AttributionSnapshot) GetModel() AttributionModel { + if x != nil { + return x.Model + } + return AttributionModel_ATTRIBUTION_MODEL_UNSPECIFIED +} + +func (x *AttributionSnapshot) GetSignalType() AttributionSignalType { + if x != nil { + return x.SignalType + } + return AttributionSignalType_ATTRIBUTION_SIGNAL_TYPE_UNSPECIFIED +} + +func (x *AttributionSnapshot) GetSignalId() string { + if x != nil { + return x.SignalId + } + return "" +} + +func (x *AttributionSnapshot) GetWindowStart() *timestamppb.Timestamp { + if x != nil { + return x.WindowStart + } + return nil +} + +func (x *AttributionSnapshot) GetWindowEnd() *timestamppb.Timestamp { + if x != nil { + return x.WindowEnd + } + return nil +} + +func (x *AttributionSnapshot) GetRecordedAt() *timestamppb.Timestamp { + if x != nil { + return x.RecordedAt + } + return nil +} + +func (x *AttributionSnapshot) GetAttribution() isAttributionSnapshot_Attribution { + if x != nil { + return x.Attribution + } + return nil +} + +func (x *AttributionSnapshot) GetDeal() *DealAttribution { + if x != nil { + if x, ok := x.Attribution.(*AttributionSnapshot_Deal); ok { + return x.Deal + } + } + return nil +} + +func (x *AttributionSnapshot) GetObjectiveOutcome() *ObjectiveOutcomeAttribution { + if x != nil { + if x, ok := x.Attribution.(*AttributionSnapshot_ObjectiveOutcome); ok { + return x.ObjectiveOutcome + } + } + return nil +} + +type isAttributionSnapshot_Attribution interface { + isAttributionSnapshot_Attribution() +} + +type AttributionSnapshot_Deal struct { + Deal *DealAttribution `protobuf:"bytes,12,opt,name=deal,proto3,oneof"` +} + +type AttributionSnapshot_ObjectiveOutcome struct { + ObjectiveOutcome *ObjectiveOutcomeAttribution `protobuf:"bytes,13,opt,name=objective_outcome,json=objectiveOutcome,proto3,oneof"` +} + +func (*AttributionSnapshot_Deal) isAttributionSnapshot_Attribution() {} + +func (*AttributionSnapshot_ObjectiveOutcome) isAttributionSnapshot_Attribution() {} + +type ObjectiveCompletionSignal struct { + state protoimpl.MessageState `protogen:"open.v1"` + WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` + ObjectiveId string `protobuf:"bytes,3,opt,name=objective_id,json=objectiveId,proto3" json:"objective_id,omitempty"` + CompletedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ObjectiveCompletionSignal) Reset() { + *x = ObjectiveCompletionSignal{} + mi := &file_attribution_v1_attribution_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ObjectiveCompletionSignal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectiveCompletionSignal) ProtoMessage() {} + +func (x *ObjectiveCompletionSignal) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectiveCompletionSignal.ProtoReflect.Descriptor instead. +func (*ObjectiveCompletionSignal) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{14} +} + +func (x *ObjectiveCompletionSignal) GetWorkspaceId() string { + if x != nil { + return x.WorkspaceId + } + return "" +} + +func (x *ObjectiveCompletionSignal) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +func (x *ObjectiveCompletionSignal) GetObjectiveId() string { + if x != nil { + return x.ObjectiveId + } + return "" +} + +func (x *ObjectiveCompletionSignal) GetCompletedAt() *timestamppb.Timestamp { + if x != nil { + return x.CompletedAt + } + return nil +} + +type TraceCompletionSignal struct { + state protoimpl.MessageState `protogen:"open.v1"` + WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` + TraceId string `protobuf:"bytes,3,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"` + CompletedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TraceCompletionSignal) Reset() { + *x = TraceCompletionSignal{} + mi := &file_attribution_v1_attribution_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TraceCompletionSignal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TraceCompletionSignal) ProtoMessage() {} + +func (x *TraceCompletionSignal) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TraceCompletionSignal.ProtoReflect.Descriptor instead. +func (*TraceCompletionSignal) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{15} +} + +func (x *TraceCompletionSignal) GetWorkspaceId() string { + if x != nil { + return x.WorkspaceId + } + return "" +} + +func (x *TraceCompletionSignal) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +func (x *TraceCompletionSignal) GetTraceId() string { + if x != nil { + return x.TraceId + } + return "" +} + +func (x *TraceCompletionSignal) GetCompletedAt() *timestamppb.Timestamp { + if x != nil { + return x.CompletedAt + } + return nil +} + +type AttributionSignal struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Signal: + // + // *AttributionSignal_ObjectiveCompletion + // *AttributionSignal_TraceCompletion + Signal isAttributionSignal_Signal `protobuf_oneof:"signal"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AttributionSignal) Reset() { + *x = AttributionSignal{} + mi := &file_attribution_v1_attribution_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AttributionSignal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AttributionSignal) ProtoMessage() {} + +func (x *AttributionSignal) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_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) +} + +// Deprecated: Use AttributionSignal.ProtoReflect.Descriptor instead. +func (*AttributionSignal) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{16} +} + +func (x *AttributionSignal) GetSignal() isAttributionSignal_Signal { + if x != nil { + return x.Signal + } + return nil +} + +func (x *AttributionSignal) GetObjectiveCompletion() *ObjectiveCompletionSignal { + if x != nil { + if x, ok := x.Signal.(*AttributionSignal_ObjectiveCompletion); ok { + return x.ObjectiveCompletion + } + } + return nil +} + +func (x *AttributionSignal) GetTraceCompletion() *TraceCompletionSignal { + if x != nil { + if x, ok := x.Signal.(*AttributionSignal_TraceCompletion); ok { + return x.TraceCompletion + } + } + return nil +} + +type isAttributionSignal_Signal interface { + isAttributionSignal_Signal() +} + +type AttributionSignal_ObjectiveCompletion struct { + ObjectiveCompletion *ObjectiveCompletionSignal `protobuf:"bytes,1,opt,name=objective_completion,json=objectiveCompletion,proto3,oneof"` +} + +type AttributionSignal_TraceCompletion struct { + TraceCompletion *TraceCompletionSignal `protobuf:"bytes,2,opt,name=trace_completion,json=traceCompletion,proto3,oneof"` +} + +func (*AttributionSignal_ObjectiveCompletion) isAttributionSignal_Signal() {} + +func (*AttributionSignal_TraceCompletion) isAttributionSignal_Signal() {} + +type GenerateReportRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Query *AttributionQuery `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GenerateReportRequest) Reset() { + *x = GenerateReportRequest{} + mi := &file_attribution_v1_attribution_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GenerateReportRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateReportRequest) ProtoMessage() {} + +func (x *GenerateReportRequest) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateReportRequest.ProtoReflect.Descriptor instead. +func (*GenerateReportRequest) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{17} +} + +func (x *GenerateReportRequest) GetQuery() *AttributionQuery { + if x != nil { + return x.Query + } + return nil +} + +type GenerateReportResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Report *AttributionReport `protobuf:"bytes,1,opt,name=report,proto3" json:"report,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GenerateReportResponse) Reset() { + *x = GenerateReportResponse{} + mi := &file_attribution_v1_attribution_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GenerateReportResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateReportResponse) ProtoMessage() {} + +func (x *GenerateReportResponse) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateReportResponse.ProtoReflect.Descriptor instead. +func (*GenerateReportResponse) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{18} +} + +func (x *GenerateReportResponse) GetReport() *AttributionReport { + if x != nil { + return x.Report + } + return nil +} + +type GetReportRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ReportId string `protobuf:"bytes,1,opt,name=report_id,json=reportId,proto3" json:"report_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetReportRequest) Reset() { + *x = GetReportRequest{} + mi := &file_attribution_v1_attribution_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetReportRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetReportRequest) ProtoMessage() {} + +func (x *GetReportRequest) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetReportRequest.ProtoReflect.Descriptor instead. +func (*GetReportRequest) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{19} +} + +func (x *GetReportRequest) GetReportId() string { + if x != nil { + return x.ReportId + } + return "" +} + +type GetReportResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Report *AttributionReport `protobuf:"bytes,1,opt,name=report,proto3" json:"report,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetReportResponse) Reset() { + *x = GetReportResponse{} + mi := &file_attribution_v1_attribution_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetReportResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetReportResponse) ProtoMessage() {} + +func (x *GetReportResponse) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetReportResponse.ProtoReflect.Descriptor instead. +func (*GetReportResponse) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{20} +} + +func (x *GetReportResponse) GetReport() *AttributionReport { + if x != nil { + return x.Report + } + return nil +} + +type ListReportsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` + WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + Model AttributionModel `protobuf:"varint,3,opt,name=model,proto3,enum=attribution.v1.AttributionModel" json:"model,omitempty"` + Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListReportsRequest) Reset() { + *x = ListReportsRequest{} + mi := &file_attribution_v1_attribution_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListReportsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListReportsRequest) ProtoMessage() {} + +func (x *ListReportsRequest) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListReportsRequest.ProtoReflect.Descriptor instead. +func (*ListReportsRequest) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{21} +} + +func (x *ListReportsRequest) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +func (x *ListReportsRequest) GetWorkspaceId() string { + if x != nil { + return x.WorkspaceId + } + return "" +} + +func (x *ListReportsRequest) GetModel() AttributionModel { + if x != nil { + return x.Model + } + return AttributionModel_ATTRIBUTION_MODEL_UNSPECIFIED +} + +func (x *ListReportsRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *ListReportsRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +type ListReportsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Reports []*AttributionReportSummary `protobuf:"bytes,1,rep,name=reports,proto3" json:"reports,omitempty"` + HasMore bool `protobuf:"varint,2,opt,name=has_more,json=hasMore,proto3" json:"has_more,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListReportsResponse) Reset() { + *x = ListReportsResponse{} + mi := &file_attribution_v1_attribution_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListReportsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListReportsResponse) ProtoMessage() {} + +func (x *ListReportsResponse) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListReportsResponse.ProtoReflect.Descriptor instead. +func (*ListReportsResponse) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{22} +} + +func (x *ListReportsResponse) GetReports() []*AttributionReportSummary { + if x != nil { + return x.Reports + } + return nil +} + +func (x *ListReportsResponse) GetHasMore() bool { + if x != nil { + return x.HasMore + } + return false +} + +type ExportReportRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Query *AttributionQuery `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Format ReportExportFormat `protobuf:"varint,2,opt,name=format,proto3,enum=attribution.v1.ReportExportFormat" json:"format,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExportReportRequest) Reset() { + *x = ExportReportRequest{} + mi := &file_attribution_v1_attribution_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExportReportRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExportReportRequest) ProtoMessage() {} + +func (x *ExportReportRequest) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExportReportRequest.ProtoReflect.Descriptor instead. +func (*ExportReportRequest) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{23} +} + +func (x *ExportReportRequest) GetQuery() *AttributionQuery { + if x != nil { + return x.Query + } + return nil +} + +func (x *ExportReportRequest) GetFormat() ReportExportFormat { + if x != nil { + return x.Format + } + return ReportExportFormat_REPORT_EXPORT_FORMAT_UNSPECIFIED +} + +type ExportReportResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` + ContentType string `protobuf:"bytes,2,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"` + Filename string `protobuf:"bytes,3,opt,name=filename,proto3" json:"filename,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExportReportResponse) Reset() { + *x = ExportReportResponse{} + mi := &file_attribution_v1_attribution_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExportReportResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExportReportResponse) ProtoMessage() {} + +func (x *ExportReportResponse) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExportReportResponse.ProtoReflect.Descriptor instead. +func (*ExportReportResponse) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{24} +} + +func (x *ExportReportResponse) GetContent() []byte { + if x != nil { + return x.Content + } + return nil } -func (x *AttributionReportSummary) GetAgentCount() int32 { +func (x *ExportReportResponse) GetContentType() string { if x != nil { - return x.AgentCount + return x.ContentType } - return 0 + return "" } -func (x *AttributionReportSummary) GetTeamCount() int32 { +func (x *ExportReportResponse) GetFilename() string { if x != nil { - return x.TeamCount + return x.Filename } - return 0 + return "" } -type GenerateReportRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Query *AttributionQuery `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache +type RecordSignalsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Signals []*AttributionSignal `protobuf:"bytes,1,rep,name=signals,proto3" json:"signals,omitempty"` + Models []AttributionModel `protobuf:"varint,2,rep,packed,name=models,proto3,enum=attribution.v1.AttributionModel" json:"models,omitempty"` + IncludeTeamRollups bool `protobuf:"varint,3,opt,name=include_team_rollups,json=includeTeamRollups,proto3" json:"include_team_rollups,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *GenerateReportRequest) Reset() { - *x = GenerateReportRequest{} - mi := &file_attribution_v1_attribution_proto_msgTypes[9] +func (x *RecordSignalsRequest) Reset() { + *x = RecordSignalsRequest{} + mi := &file_attribution_v1_attribution_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GenerateReportRequest) String() string { +func (x *RecordSignalsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GenerateReportRequest) ProtoMessage() {} +func (*RecordSignalsRequest) ProtoMessage() {} -func (x *GenerateReportRequest) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[9] +func (x *RecordSignalsRequest) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1000,40 +2336,54 @@ func (x *GenerateReportRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GenerateReportRequest.ProtoReflect.Descriptor instead. -func (*GenerateReportRequest) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{9} +// Deprecated: Use RecordSignalsRequest.ProtoReflect.Descriptor instead. +func (*RecordSignalsRequest) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{25} } -func (x *GenerateReportRequest) GetQuery() *AttributionQuery { +func (x *RecordSignalsRequest) GetSignals() []*AttributionSignal { if x != nil { - return x.Query + return x.Signals } return nil } -type GenerateReportResponse struct { +func (x *RecordSignalsRequest) GetModels() []AttributionModel { + if x != nil { + return x.Models + } + return nil +} + +func (x *RecordSignalsRequest) GetIncludeTeamRollups() bool { + if x != nil { + return x.IncludeTeamRollups + } + return false +} + +type RecordSignalsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Report *AttributionReport `protobuf:"bytes,1,opt,name=report,proto3" json:"report,omitempty"` + Snapshots []*AttributionSnapshot `protobuf:"bytes,1,rep,name=snapshots,proto3" json:"snapshots,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *GenerateReportResponse) Reset() { - *x = GenerateReportResponse{} - mi := &file_attribution_v1_attribution_proto_msgTypes[10] +func (x *RecordSignalsResponse) Reset() { + *x = RecordSignalsResponse{} + mi := &file_attribution_v1_attribution_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GenerateReportResponse) String() string { +func (x *RecordSignalsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GenerateReportResponse) ProtoMessage() {} +func (*RecordSignalsResponse) ProtoMessage() {} -func (x *GenerateReportResponse) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[10] +func (x *RecordSignalsResponse) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1044,40 +2394,40 @@ func (x *GenerateReportResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GenerateReportResponse.ProtoReflect.Descriptor instead. -func (*GenerateReportResponse) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{10} +// Deprecated: Use RecordSignalsResponse.ProtoReflect.Descriptor instead. +func (*RecordSignalsResponse) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{26} } -func (x *GenerateReportResponse) GetReport() *AttributionReport { +func (x *RecordSignalsResponse) GetSnapshots() []*AttributionSnapshot { if x != nil { - return x.Report + return x.Snapshots } return nil } -type GetReportRequest struct { +type GetSnapshotRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - ReportId string `protobuf:"bytes,1,opt,name=report_id,json=reportId,proto3" json:"report_id,omitempty"` + SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *GetReportRequest) Reset() { - *x = GetReportRequest{} - mi := &file_attribution_v1_attribution_proto_msgTypes[11] +func (x *GetSnapshotRequest) Reset() { + *x = GetSnapshotRequest{} + mi := &file_attribution_v1_attribution_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetReportRequest) String() string { +func (x *GetSnapshotRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReportRequest) ProtoMessage() {} +func (*GetSnapshotRequest) ProtoMessage() {} -func (x *GetReportRequest) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[11] +func (x *GetSnapshotRequest) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1088,40 +2438,40 @@ func (x *GetReportRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetReportRequest.ProtoReflect.Descriptor instead. -func (*GetReportRequest) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{11} +// Deprecated: Use GetSnapshotRequest.ProtoReflect.Descriptor instead. +func (*GetSnapshotRequest) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{27} } -func (x *GetReportRequest) GetReportId() string { +func (x *GetSnapshotRequest) GetSnapshotId() string { if x != nil { - return x.ReportId + return x.SnapshotId } return "" } -type GetReportResponse struct { +type GetSnapshotResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Report *AttributionReport `protobuf:"bytes,1,opt,name=report,proto3" json:"report,omitempty"` + Snapshot *AttributionSnapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *GetReportResponse) Reset() { - *x = GetReportResponse{} - mi := &file_attribution_v1_attribution_proto_msgTypes[12] +func (x *GetSnapshotResponse) Reset() { + *x = GetSnapshotResponse{} + mi := &file_attribution_v1_attribution_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetReportResponse) String() string { +func (x *GetSnapshotResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReportResponse) ProtoMessage() {} +func (*GetSnapshotResponse) ProtoMessage() {} -func (x *GetReportResponse) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[12] +func (x *GetSnapshotResponse) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1132,44 +2482,46 @@ func (x *GetReportResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetReportResponse.ProtoReflect.Descriptor instead. -func (*GetReportResponse) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{12} +// Deprecated: Use GetSnapshotResponse.ProtoReflect.Descriptor instead. +func (*GetSnapshotResponse) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{28} } -func (x *GetReportResponse) GetReport() *AttributionReport { +func (x *GetSnapshotResponse) GetSnapshot() *AttributionSnapshot { if x != nil { - return x.Report + return x.Snapshot } return nil } -type ListReportsRequest struct { +type ListSnapshotsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` - Model AttributionModel `protobuf:"varint,3,opt,name=model,proto3,enum=attribution.v1.AttributionModel" json:"model,omitempty"` - Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"` + SubjectKind AttributionSubjectKind `protobuf:"varint,3,opt,name=subject_kind,json=subjectKind,proto3,enum=attribution.v1.AttributionSubjectKind" json:"subject_kind,omitempty"` + SubjectId string `protobuf:"bytes,4,opt,name=subject_id,json=subjectId,proto3" json:"subject_id,omitempty"` + Model AttributionModel `protobuf:"varint,5,opt,name=model,proto3,enum=attribution.v1.AttributionModel" json:"model,omitempty"` + Limit int32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,7,opt,name=offset,proto3" json:"offset,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *ListReportsRequest) Reset() { - *x = ListReportsRequest{} - mi := &file_attribution_v1_attribution_proto_msgTypes[13] +func (x *ListSnapshotsRequest) Reset() { + *x = ListSnapshotsRequest{} + mi := &file_attribution_v1_attribution_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ListReportsRequest) String() string { +func (x *ListSnapshotsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListReportsRequest) ProtoMessage() {} +func (*ListSnapshotsRequest) ProtoMessage() {} -func (x *ListReportsRequest) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[13] +func (x *ListSnapshotsRequest) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1180,174 +2532,83 @@ func (x *ListReportsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListReportsRequest.ProtoReflect.Descriptor instead. -func (*ListReportsRequest) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{13} +// Deprecated: Use ListSnapshotsRequest.ProtoReflect.Descriptor instead. +func (*ListSnapshotsRequest) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{29} } -func (x *ListReportsRequest) GetOrganizationId() string { +func (x *ListSnapshotsRequest) GetOrganizationId() string { if x != nil { return x.OrganizationId } return "" } -func (x *ListReportsRequest) GetWorkspaceId() string { +func (x *ListSnapshotsRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } -func (x *ListReportsRequest) GetModel() AttributionModel { - if x != nil { - return x.Model - } - return AttributionModel_ATTRIBUTION_MODEL_UNSPECIFIED -} - -func (x *ListReportsRequest) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -func (x *ListReportsRequest) GetOffset() int32 { - if x != nil { - return x.Offset - } - return 0 -} - -type ListReportsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Reports []*AttributionReportSummary `protobuf:"bytes,1,rep,name=reports,proto3" json:"reports,omitempty"` - HasMore bool `protobuf:"varint,2,opt,name=has_more,json=hasMore,proto3" json:"has_more,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListReportsResponse) Reset() { - *x = ListReportsResponse{} - mi := &file_attribution_v1_attribution_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListReportsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListReportsResponse) ProtoMessage() {} - -func (x *ListReportsResponse) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListReportsResponse.ProtoReflect.Descriptor instead. -func (*ListReportsResponse) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{14} -} - -func (x *ListReportsResponse) GetReports() []*AttributionReportSummary { +func (x *ListSnapshotsRequest) GetSubjectKind() AttributionSubjectKind { if x != nil { - return x.Reports + return x.SubjectKind } - return nil + return AttributionSubjectKind_ATTRIBUTION_SUBJECT_KIND_UNSPECIFIED } -func (x *ListReportsResponse) GetHasMore() bool { +func (x *ListSnapshotsRequest) GetSubjectId() string { if x != nil { - return x.HasMore + return x.SubjectId } - return false -} - -type ExportReportRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Query *AttributionQuery `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` - Format ReportExportFormat `protobuf:"varint,2,opt,name=format,proto3,enum=attribution.v1.ReportExportFormat" json:"format,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ExportReportRequest) Reset() { - *x = ExportReportRequest{} - mi := &file_attribution_v1_attribution_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExportReportRequest) String() string { - return protoimpl.X.MessageStringOf(x) + return "" } -func (*ExportReportRequest) ProtoMessage() {} - -func (x *ExportReportRequest) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[15] +func (x *ListSnapshotsRequest) GetModel() AttributionModel { if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms + return x.Model } - return mi.MessageOf(x) -} - -// Deprecated: Use ExportReportRequest.ProtoReflect.Descriptor instead. -func (*ExportReportRequest) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{15} + return AttributionModel_ATTRIBUTION_MODEL_UNSPECIFIED } -func (x *ExportReportRequest) GetQuery() *AttributionQuery { +func (x *ListSnapshotsRequest) GetLimit() int32 { if x != nil { - return x.Query + return x.Limit } - return nil + return 0 } -func (x *ExportReportRequest) GetFormat() ReportExportFormat { +func (x *ListSnapshotsRequest) GetOffset() int32 { if x != nil { - return x.Format + return x.Offset } - return ReportExportFormat_REPORT_EXPORT_FORMAT_UNSPECIFIED + return 0 } -type ExportReportResponse struct { +type ListSnapshotsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` - ContentType string `protobuf:"bytes,2,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"` - Filename string `protobuf:"bytes,3,opt,name=filename,proto3" json:"filename,omitempty"` + Snapshots []*AttributionSnapshot `protobuf:"bytes,1,rep,name=snapshots,proto3" json:"snapshots,omitempty"` + HasMore bool `protobuf:"varint,2,opt,name=has_more,json=hasMore,proto3" json:"has_more,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *ExportReportResponse) Reset() { - *x = ExportReportResponse{} - mi := &file_attribution_v1_attribution_proto_msgTypes[16] +func (x *ListSnapshotsResponse) Reset() { + *x = ListSnapshotsResponse{} + mi := &file_attribution_v1_attribution_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ExportReportResponse) String() string { +func (x *ListSnapshotsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExportReportResponse) ProtoMessage() {} +func (*ListSnapshotsResponse) ProtoMessage() {} -func (x *ExportReportResponse) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[16] +func (x *ListSnapshotsResponse) ProtoReflect() protoreflect.Message { + mi := &file_attribution_v1_attribution_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1358,37 +2619,30 @@ func (x *ExportReportResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExportReportResponse.ProtoReflect.Descriptor instead. -func (*ExportReportResponse) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{16} +// Deprecated: Use ListSnapshotsResponse.ProtoReflect.Descriptor instead. +func (*ListSnapshotsResponse) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{30} } -func (x *ExportReportResponse) GetContent() []byte { +func (x *ListSnapshotsResponse) GetSnapshots() []*AttributionSnapshot { if x != nil { - return x.Content + return x.Snapshots } return nil } -func (x *ExportReportResponse) GetContentType() string { - if x != nil { - return x.ContentType - } - return "" -} - -func (x *ExportReportResponse) GetFilename() string { +func (x *ListSnapshotsResponse) GetHasMore() bool { if x != nil { - return x.Filename + return x.HasMore } - return "" + return false } var File_attribution_v1_attribution_proto protoreflect.FileDescriptor const file_attribution_v1_attribution_proto_rawDesc = "" + "\n" + - " attribution/v1/attribution.proto\x12\x0eattribution.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x16traces/v1/traces.proto\"\xd5\x02\n" + + " attribution/v1/attribution.proto\x12\x0eattribution.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x16traces/v1/traces.proto\"\xfa\x02\n" + "\x10AttributionQuery\x12!\n" + "\fworkspace_id\x18\x01 \x01(\tR\vworkspaceId\x12'\n" + "\x0forganization_id\x18\x02 \x01(\tR\x0eorganizationId\x12\x19\n" + @@ -1397,7 +2651,8 @@ const file_attribution_v1_attribution_proto_rawDesc = "" + "\n" + "start_time\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tstartTime\x125\n" + "\bend_time\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\aendTime\x120\n" + - "\x14include_team_rollups\x18\a \x01(\bR\x12includeTeamRollups\"\xd3\x02\n" + + "\x14include_team_rollups\x18\a \x01(\bR\x12includeTeamRollups\x12#\n" + + "\robjective_ids\x18\b \x03(\tR\fobjectiveIds\"\xd3\x02\n" + "\vDealContext\x12\x17\n" + "\adeal_id\x18\x01 \x01(\tR\x06dealId\x12\x14\n" + "\x05title\x18\x02 \x01(\tR\x05title\x12\x14\n" + @@ -1413,7 +2668,19 @@ const file_attribution_v1_attribution_proto_rawDesc = "" + "created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + "\n" + "updated_at\x18\n" + - " \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"e\n" + + " \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"\xed\x02\n" + + "\x10ObjectiveContext\x12!\n" + + "\fobjective_id\x18\x01 \x01(\tR\vobjectiveId\x12\x19\n" + + "\bagent_id\x18\x02 \x01(\tR\aagentId\x12\x18\n" + + "\asurface\x18\x03 \x01(\tR\asurface\x12\x14\n" + + "\x05title\x18\x04 \x01(\tR\x05title\x12 \n" + + "\vdescription\x18\x05 \x01(\tR\vdescription\x12\x14\n" + + "\x05state\x18\x06 \x01(\tR\x05state\x129\n" + + "\n" + + "created_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + + "\n" + + "updated_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12=\n" + + "\fcompleted_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\"e\n" + "\x0fTraceTouchpoint\x12-\n" + "\x05trace\x18\x01 \x01(\v2\x17.traces.v1.TraceSummaryR\x05trace\x12#\n" + "\rmatch_reasons\x18\x02 \x03(\tR\fmatchReasons\"\xf8\x02\n" + @@ -1449,6 +2716,23 @@ const file_attribution_v1_attribution_proto_rawDesc = "" + "\x16attributed_revenue_usd\x18\x02 \x01(\x01R\x14attributedRevenueUsd\x12$\n" + "\x0etotal_cost_usd\x18\x03 \x01(\x01R\ftotalCostUsd\x12!\n" + "\froi_multiple\x18\x04 \x01(\x01R\vroiMultiple\x12\x1b\n" + + "\tagent_ids\x18\x05 \x03(\tR\bagentIds\"\xca\x02\n" + + "\x15ObjectiveAgentSummary\x12\x19\n" + + "\bagent_id\x18\x01 \x01(\tR\aagentId\x12-\n" + + "\x12attribution_weight\x18\x02 \x01(\x01R\x11attributionWeight\x128\n" + + "\x18attributed_outcome_count\x18\x03 \x01(\x01R\x16attributedOutcomeCount\x12$\n" + + "\x0etotal_cost_usd\x18\x04 \x01(\x01R\ftotalCostUsd\x12\x1f\n" + + "\vtrace_count\x18\x05 \x01(\x05R\n" + + "traceCount\x12\x1f\n" + + "\vusage_count\x18\x06 \x01(\x05R\n" + + "usageCount\x12\x1b\n" + + "\ttrace_ids\x18\a \x03(\tR\btraceIds\x12(\n" + + "\x10usage_record_ids\x18\b \x03(\tR\x0eusageRecordIds\"\xdb\x01\n" + + "\x14ObjectiveTeamSummary\x12\x17\n" + + "\ateam_id\x18\x01 \x01(\tR\x06teamId\x12-\n" + + "\x12attribution_weight\x18\x02 \x01(\x01R\x11attributionWeight\x128\n" + + "\x18attributed_outcome_count\x18\x03 \x01(\x01R\x16attributedOutcomeCount\x12$\n" + + "\x0etotal_cost_usd\x18\x04 \x01(\x01R\ftotalCostUsd\x12\x1b\n" + "\tagent_ids\x18\x05 \x03(\tR\bagentIds\"\xd3\x04\n" + "\x0fDealAttribution\x12/\n" + "\x04deal\x18\x01 \x01(\v2\x1b.attribution.v1.DealContextR\x04deal\x12L\n" + @@ -1459,14 +2743,27 @@ const file_attribution_v1_attribution_proto_rawDesc = "" + "\x1ctotal_attributed_revenue_usd\x18\x06 \x01(\x01R\x19totalAttributedRevenueUsd\x129\n" + "\x19total_attributed_cost_usd\x18\a \x01(\x01R\x16totalAttributedCostUsd\x128\n" + "\x18unattributed_revenue_usd\x18\b \x01(\x01R\x16unattributedRevenueUsd\x122\n" + - "\x15unattributed_cost_usd\x18\t \x01(\x01R\x13unattributedCostUsd\"\xdc\x02\n" + + "\x15unattributed_cost_usd\x18\t \x01(\x01R\x13unattributedCostUsd\"\x88\x05\n" + + "\x1bObjectiveOutcomeAttribution\x12>\n" + + "\tobjective\x18\x01 \x01(\v2 .attribution.v1.ObjectiveContextR\tobjective\x12L\n" + + "\x11trace_touchpoints\x18\x02 \x03(\v2\x1f.attribution.v1.TraceTouchpointR\x10traceTouchpoints\x12L\n" + + "\x11usage_touchpoints\x18\x03 \x03(\v2\x1f.attribution.v1.UsageTouchpointR\x10usageTouchpoints\x12N\n" + + "\x0fagent_summaries\x18\x04 \x03(\v2%.attribution.v1.ObjectiveAgentSummaryR\x0eagentSummaries\x12K\n" + + "\x0eteam_summaries\x18\x05 \x03(\v2$.attribution.v1.ObjectiveTeamSummaryR\rteamSummaries\x12C\n" + + "\x1etotal_attributed_outcome_count\x18\x06 \x01(\x01R\x1btotalAttributedOutcomeCount\x129\n" + + "\x19total_attributed_cost_usd\x18\a \x01(\x01R\x16totalAttributedCostUsd\x12<\n" + + "\x1aunattributed_outcome_count\x18\b \x01(\x01R\x18unattributedOutcomeCount\x122\n" + + "\x15unattributed_cost_usd\x18\t \x01(\x01R\x13unattributedCostUsd\"\xfb\x04\n" + "\x11AttributionReport\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x126\n" + "\x05query\x18\x02 \x01(\v2 .attribution.v1.AttributionQueryR\x05query\x12=\n" + "\fgenerated_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\vgeneratedAt\x125\n" + "\x05deals\x18\x04 \x03(\v2\x1f.attribution.v1.DealAttributionR\x05deals\x12E\n" + "\x0fagent_summaries\x18\x05 \x03(\v2\x1c.attribution.v1.AgentSummaryR\x0eagentSummaries\x12B\n" + - "\x0eteam_summaries\x18\x06 \x03(\v2\x1b.attribution.v1.TeamSummaryR\rteamSummaries\"\x80\x02\n" + + "\x0eteam_summaries\x18\x06 \x03(\v2\x1b.attribution.v1.TeamSummaryR\rteamSummaries\x12Z\n" + + "\x12objective_outcomes\x18\a \x03(\v2+.attribution.v1.ObjectiveOutcomeAttributionR\x11objectiveOutcomes\x12a\n" + + "\x19objective_agent_summaries\x18\b \x03(\v2%.attribution.v1.ObjectiveAgentSummaryR\x17objectiveAgentSummaries\x12^\n" + + "\x18objective_team_summaries\x18\t \x03(\v2$.attribution.v1.ObjectiveTeamSummaryR\x16objectiveTeamSummaries\"\xb8\x02\n" + "\x18AttributionReportSummary\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x126\n" + "\x05query\x18\x02 \x01(\v2 .attribution.v1.AttributionQueryR\x05query\x12=\n" + @@ -1476,7 +2773,42 @@ const file_attribution_v1_attribution_proto_rawDesc = "" + "\vagent_count\x18\x05 \x01(\x05R\n" + "agentCount\x12\x1d\n" + "\n" + - "team_count\x18\x06 \x01(\x05R\tteamCount\"O\n" + + "team_count\x18\x06 \x01(\x05R\tteamCount\x126\n" + + "\x17objective_outcome_count\x18\a \x01(\x05R\x15objectiveOutcomeCount\"\xd1\x05\n" + + "\x13AttributionSnapshot\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12!\n" + + "\fworkspace_id\x18\x02 \x01(\tR\vworkspaceId\x12'\n" + + "\x0forganization_id\x18\x03 \x01(\tR\x0eorganizationId\x12I\n" + + "\fsubject_kind\x18\x04 \x01(\x0e2&.attribution.v1.AttributionSubjectKindR\vsubjectKind\x12\x1d\n" + + "\n" + + "subject_id\x18\x05 \x01(\tR\tsubjectId\x126\n" + + "\x05model\x18\x06 \x01(\x0e2 .attribution.v1.AttributionModelR\x05model\x12F\n" + + "\vsignal_type\x18\a \x01(\x0e2%.attribution.v1.AttributionSignalTypeR\n" + + "signalType\x12\x1b\n" + + "\tsignal_id\x18\b \x01(\tR\bsignalId\x12=\n" + + "\fwindow_start\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\vwindowStart\x129\n" + + "\n" + + "window_end\x18\n" + + " \x01(\v2\x1a.google.protobuf.TimestampR\twindowEnd\x12;\n" + + "\vrecorded_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "recordedAt\x125\n" + + "\x04deal\x18\f \x01(\v2\x1f.attribution.v1.DealAttributionH\x00R\x04deal\x12Z\n" + + "\x11objective_outcome\x18\r \x01(\v2+.attribution.v1.ObjectiveOutcomeAttributionH\x00R\x10objectiveOutcomeB\r\n" + + "\vattribution\"\xc9\x01\n" + + "\x19ObjectiveCompletionSignal\x12!\n" + + "\fworkspace_id\x18\x01 \x01(\tR\vworkspaceId\x12'\n" + + "\x0forganization_id\x18\x02 \x01(\tR\x0eorganizationId\x12!\n" + + "\fobjective_id\x18\x03 \x01(\tR\vobjectiveId\x12=\n" + + "\fcompleted_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\"\xbd\x01\n" + + "\x15TraceCompletionSignal\x12!\n" + + "\fworkspace_id\x18\x01 \x01(\tR\vworkspaceId\x12'\n" + + "\x0forganization_id\x18\x02 \x01(\tR\x0eorganizationId\x12\x19\n" + + "\btrace_id\x18\x03 \x01(\tR\atraceId\x12=\n" + + "\fcompleted_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\"\xd1\x01\n" + + "\x11AttributionSignal\x12^\n" + + "\x14objective_completion\x18\x01 \x01(\v2).attribution.v1.ObjectiveCompletionSignalH\x00R\x13objectiveCompletion\x12R\n" + + "\x10trace_completion\x18\x02 \x01(\v2%.attribution.v1.TraceCompletionSignalH\x00R\x0ftraceCompletionB\b\n" + + "\x06signal\"O\n" + "\x15GenerateReportRequest\x126\n" + "\x05query\x18\x01 \x01(\v2 .attribution.v1.AttributionQueryR\x05query\"S\n" + "\x16GenerateReportResponse\x129\n" + @@ -1500,7 +2832,30 @@ const file_attribution_v1_attribution_proto_rawDesc = "" + "\x14ExportReportResponse\x12\x18\n" + "\acontent\x18\x01 \x01(\fR\acontent\x12!\n" + "\fcontent_type\x18\x02 \x01(\tR\vcontentType\x12\x1a\n" + - "\bfilename\x18\x03 \x01(\tR\bfilename*\x95\x01\n" + + "\bfilename\x18\x03 \x01(\tR\bfilename\"\xbf\x01\n" + + "\x14RecordSignalsRequest\x12;\n" + + "\asignals\x18\x01 \x03(\v2!.attribution.v1.AttributionSignalR\asignals\x128\n" + + "\x06models\x18\x02 \x03(\x0e2 .attribution.v1.AttributionModelR\x06models\x120\n" + + "\x14include_team_rollups\x18\x03 \x01(\bR\x12includeTeamRollups\"Z\n" + + "\x15RecordSignalsResponse\x12A\n" + + "\tsnapshots\x18\x01 \x03(\v2#.attribution.v1.AttributionSnapshotR\tsnapshots\"5\n" + + "\x12GetSnapshotRequest\x12\x1f\n" + + "\vsnapshot_id\x18\x01 \x01(\tR\n" + + "snapshotId\"V\n" + + "\x13GetSnapshotResponse\x12?\n" + + "\bsnapshot\x18\x01 \x01(\v2#.attribution.v1.AttributionSnapshotR\bsnapshot\"\xb2\x02\n" + + "\x14ListSnapshotsRequest\x12'\n" + + "\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12!\n" + + "\fworkspace_id\x18\x02 \x01(\tR\vworkspaceId\x12I\n" + + "\fsubject_kind\x18\x03 \x01(\x0e2&.attribution.v1.AttributionSubjectKindR\vsubjectKind\x12\x1d\n" + + "\n" + + "subject_id\x18\x04 \x01(\tR\tsubjectId\x126\n" + + "\x05model\x18\x05 \x01(\x0e2 .attribution.v1.AttributionModelR\x05model\x12\x14\n" + + "\x05limit\x18\x06 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\a \x01(\x05R\x06offset\"u\n" + + "\x15ListSnapshotsResponse\x12A\n" + + "\tsnapshots\x18\x01 \x03(\v2#.attribution.v1.AttributionSnapshotR\tsnapshots\x12\x19\n" + + "\bhas_more\x18\x02 \x01(\bR\ahasMore*\x95\x01\n" + "\x10AttributionModel\x12!\n" + "\x1dATTRIBUTION_MODEL_UNSPECIFIED\x10\x00\x12\x1c\n" + "\x18ATTRIBUTION_MODEL_DIRECT\x10\x01\x12\x1e\n" + @@ -1509,12 +2864,23 @@ const file_attribution_v1_attribution_proto_rawDesc = "" + "\x12ReportExportFormat\x12$\n" + " REPORT_EXPORT_FORMAT_UNSPECIFIED\x10\x00\x12\x1d\n" + "\x19REPORT_EXPORT_FORMAT_JSON\x10\x01\x12\x1c\n" + - "\x18REPORT_EXPORT_FORMAT_CSV\x10\x022\xfa\x02\n" + + "\x18REPORT_EXPORT_FORMAT_CSV\x10\x02*\x8d\x01\n" + + "\x16AttributionSubjectKind\x12(\n" + + "$ATTRIBUTION_SUBJECT_KIND_UNSPECIFIED\x10\x00\x12!\n" + + "\x1dATTRIBUTION_SUBJECT_KIND_DEAL\x10\x01\x12&\n" + + "\"ATTRIBUTION_SUBJECT_KIND_OBJECTIVE\x10\x02*\x9e\x01\n" + + "\x15AttributionSignalType\x12'\n" + + "#ATTRIBUTION_SIGNAL_TYPE_UNSPECIFIED\x10\x00\x12/\n" + + "+ATTRIBUTION_SIGNAL_TYPE_OBJECTIVE_COMPLETED\x10\x01\x12+\n" + + "'ATTRIBUTION_SIGNAL_TYPE_TRACE_COMPLETED\x10\x022\x8e\x05\n" + "\x12AttributionService\x12_\n" + "\x0eGenerateReport\x12%.attribution.v1.GenerateReportRequest\x1a&.attribution.v1.GenerateReportResponse\x12P\n" + "\tGetReport\x12 .attribution.v1.GetReportRequest\x1a!.attribution.v1.GetReportResponse\x12V\n" + "\vListReports\x12\".attribution.v1.ListReportsRequest\x1a#.attribution.v1.ListReportsResponse\x12Y\n" + - "\fExportReport\x12#.attribution.v1.ExportReportRequest\x1a$.attribution.v1.ExportReportResponseB>ZZ attribution.v1.AttributionModel - 19, // 1: attribution.v1.AttributionQuery.start_time:type_name -> google.protobuf.Timestamp - 19, // 2: attribution.v1.AttributionQuery.end_time:type_name -> google.protobuf.Timestamp - 19, // 3: attribution.v1.DealContext.created_at:type_name -> google.protobuf.Timestamp - 19, // 4: attribution.v1.DealContext.updated_at:type_name -> google.protobuf.Timestamp - 20, // 5: attribution.v1.TraceTouchpoint.trace:type_name -> traces.v1.TraceSummary - 19, // 6: attribution.v1.UsageTouchpoint.observed_at:type_name -> google.protobuf.Timestamp - 3, // 7: attribution.v1.DealAttribution.deal:type_name -> attribution.v1.DealContext - 4, // 8: attribution.v1.DealAttribution.trace_touchpoints:type_name -> attribution.v1.TraceTouchpoint - 5, // 9: attribution.v1.DealAttribution.usage_touchpoints:type_name -> attribution.v1.UsageTouchpoint - 6, // 10: attribution.v1.DealAttribution.agent_summaries:type_name -> attribution.v1.AgentSummary - 7, // 11: attribution.v1.DealAttribution.team_summaries:type_name -> attribution.v1.TeamSummary - 2, // 12: attribution.v1.AttributionReport.query:type_name -> attribution.v1.AttributionQuery - 19, // 13: attribution.v1.AttributionReport.generated_at:type_name -> google.protobuf.Timestamp - 8, // 14: attribution.v1.AttributionReport.deals:type_name -> attribution.v1.DealAttribution - 6, // 15: attribution.v1.AttributionReport.agent_summaries:type_name -> attribution.v1.AgentSummary - 7, // 16: attribution.v1.AttributionReport.team_summaries:type_name -> attribution.v1.TeamSummary - 2, // 17: attribution.v1.AttributionReportSummary.query:type_name -> attribution.v1.AttributionQuery - 19, // 18: attribution.v1.AttributionReportSummary.generated_at:type_name -> google.protobuf.Timestamp - 2, // 19: attribution.v1.GenerateReportRequest.query:type_name -> attribution.v1.AttributionQuery - 9, // 20: attribution.v1.GenerateReportResponse.report:type_name -> attribution.v1.AttributionReport - 9, // 21: attribution.v1.GetReportResponse.report:type_name -> attribution.v1.AttributionReport - 0, // 22: attribution.v1.ListReportsRequest.model:type_name -> attribution.v1.AttributionModel - 10, // 23: attribution.v1.ListReportsResponse.reports:type_name -> attribution.v1.AttributionReportSummary - 2, // 24: attribution.v1.ExportReportRequest.query:type_name -> attribution.v1.AttributionQuery - 1, // 25: attribution.v1.ExportReportRequest.format:type_name -> attribution.v1.ReportExportFormat - 11, // 26: attribution.v1.AttributionService.GenerateReport:input_type -> attribution.v1.GenerateReportRequest - 13, // 27: attribution.v1.AttributionService.GetReport:input_type -> attribution.v1.GetReportRequest - 15, // 28: attribution.v1.AttributionService.ListReports:input_type -> attribution.v1.ListReportsRequest - 17, // 29: attribution.v1.AttributionService.ExportReport:input_type -> attribution.v1.ExportReportRequest - 12, // 30: attribution.v1.AttributionService.GenerateReport:output_type -> attribution.v1.GenerateReportResponse - 14, // 31: attribution.v1.AttributionService.GetReport:output_type -> attribution.v1.GetReportResponse - 16, // 32: attribution.v1.AttributionService.ListReports:output_type -> attribution.v1.ListReportsResponse - 18, // 33: attribution.v1.AttributionService.ExportReport:output_type -> attribution.v1.ExportReportResponse - 30, // [30:34] is the sub-list for method output_type - 26, // [26:30] is the sub-list for method input_type - 26, // [26:26] is the sub-list for extension type_name - 26, // [26:26] is the sub-list for extension extendee - 0, // [0:26] is the sub-list for field type_name + 35, // 1: attribution.v1.AttributionQuery.start_time:type_name -> google.protobuf.Timestamp + 35, // 2: attribution.v1.AttributionQuery.end_time:type_name -> google.protobuf.Timestamp + 35, // 3: attribution.v1.DealContext.created_at:type_name -> google.protobuf.Timestamp + 35, // 4: attribution.v1.DealContext.updated_at:type_name -> google.protobuf.Timestamp + 35, // 5: attribution.v1.ObjectiveContext.created_at:type_name -> google.protobuf.Timestamp + 35, // 6: attribution.v1.ObjectiveContext.updated_at:type_name -> google.protobuf.Timestamp + 35, // 7: attribution.v1.ObjectiveContext.completed_at:type_name -> google.protobuf.Timestamp + 36, // 8: attribution.v1.TraceTouchpoint.trace:type_name -> traces.v1.TraceSummary + 35, // 9: attribution.v1.UsageTouchpoint.observed_at:type_name -> google.protobuf.Timestamp + 5, // 10: attribution.v1.DealAttribution.deal:type_name -> attribution.v1.DealContext + 7, // 11: attribution.v1.DealAttribution.trace_touchpoints:type_name -> attribution.v1.TraceTouchpoint + 8, // 12: attribution.v1.DealAttribution.usage_touchpoints:type_name -> attribution.v1.UsageTouchpoint + 9, // 13: attribution.v1.DealAttribution.agent_summaries:type_name -> attribution.v1.AgentSummary + 10, // 14: attribution.v1.DealAttribution.team_summaries:type_name -> attribution.v1.TeamSummary + 6, // 15: attribution.v1.ObjectiveOutcomeAttribution.objective:type_name -> attribution.v1.ObjectiveContext + 7, // 16: attribution.v1.ObjectiveOutcomeAttribution.trace_touchpoints:type_name -> attribution.v1.TraceTouchpoint + 8, // 17: attribution.v1.ObjectiveOutcomeAttribution.usage_touchpoints:type_name -> attribution.v1.UsageTouchpoint + 11, // 18: attribution.v1.ObjectiveOutcomeAttribution.agent_summaries:type_name -> attribution.v1.ObjectiveAgentSummary + 12, // 19: attribution.v1.ObjectiveOutcomeAttribution.team_summaries:type_name -> attribution.v1.ObjectiveTeamSummary + 4, // 20: attribution.v1.AttributionReport.query:type_name -> attribution.v1.AttributionQuery + 35, // 21: attribution.v1.AttributionReport.generated_at:type_name -> google.protobuf.Timestamp + 13, // 22: attribution.v1.AttributionReport.deals:type_name -> attribution.v1.DealAttribution + 9, // 23: attribution.v1.AttributionReport.agent_summaries:type_name -> attribution.v1.AgentSummary + 10, // 24: attribution.v1.AttributionReport.team_summaries:type_name -> attribution.v1.TeamSummary + 14, // 25: attribution.v1.AttributionReport.objective_outcomes:type_name -> attribution.v1.ObjectiveOutcomeAttribution + 11, // 26: attribution.v1.AttributionReport.objective_agent_summaries:type_name -> attribution.v1.ObjectiveAgentSummary + 12, // 27: attribution.v1.AttributionReport.objective_team_summaries:type_name -> attribution.v1.ObjectiveTeamSummary + 4, // 28: attribution.v1.AttributionReportSummary.query:type_name -> attribution.v1.AttributionQuery + 35, // 29: attribution.v1.AttributionReportSummary.generated_at:type_name -> google.protobuf.Timestamp + 2, // 30: attribution.v1.AttributionSnapshot.subject_kind:type_name -> attribution.v1.AttributionSubjectKind + 0, // 31: attribution.v1.AttributionSnapshot.model:type_name -> attribution.v1.AttributionModel + 3, // 32: attribution.v1.AttributionSnapshot.signal_type:type_name -> attribution.v1.AttributionSignalType + 35, // 33: attribution.v1.AttributionSnapshot.window_start:type_name -> google.protobuf.Timestamp + 35, // 34: attribution.v1.AttributionSnapshot.window_end:type_name -> google.protobuf.Timestamp + 35, // 35: attribution.v1.AttributionSnapshot.recorded_at:type_name -> google.protobuf.Timestamp + 13, // 36: attribution.v1.AttributionSnapshot.deal:type_name -> attribution.v1.DealAttribution + 14, // 37: attribution.v1.AttributionSnapshot.objective_outcome:type_name -> attribution.v1.ObjectiveOutcomeAttribution + 35, // 38: attribution.v1.ObjectiveCompletionSignal.completed_at:type_name -> google.protobuf.Timestamp + 35, // 39: attribution.v1.TraceCompletionSignal.completed_at:type_name -> google.protobuf.Timestamp + 18, // 40: attribution.v1.AttributionSignal.objective_completion:type_name -> attribution.v1.ObjectiveCompletionSignal + 19, // 41: attribution.v1.AttributionSignal.trace_completion:type_name -> attribution.v1.TraceCompletionSignal + 4, // 42: attribution.v1.GenerateReportRequest.query:type_name -> attribution.v1.AttributionQuery + 15, // 43: attribution.v1.GenerateReportResponse.report:type_name -> attribution.v1.AttributionReport + 15, // 44: attribution.v1.GetReportResponse.report:type_name -> attribution.v1.AttributionReport + 0, // 45: attribution.v1.ListReportsRequest.model:type_name -> attribution.v1.AttributionModel + 16, // 46: attribution.v1.ListReportsResponse.reports:type_name -> attribution.v1.AttributionReportSummary + 4, // 47: attribution.v1.ExportReportRequest.query:type_name -> attribution.v1.AttributionQuery + 1, // 48: attribution.v1.ExportReportRequest.format:type_name -> attribution.v1.ReportExportFormat + 20, // 49: attribution.v1.RecordSignalsRequest.signals:type_name -> attribution.v1.AttributionSignal + 0, // 50: attribution.v1.RecordSignalsRequest.models:type_name -> attribution.v1.AttributionModel + 17, // 51: attribution.v1.RecordSignalsResponse.snapshots:type_name -> attribution.v1.AttributionSnapshot + 17, // 52: attribution.v1.GetSnapshotResponse.snapshot:type_name -> attribution.v1.AttributionSnapshot + 2, // 53: attribution.v1.ListSnapshotsRequest.subject_kind:type_name -> attribution.v1.AttributionSubjectKind + 0, // 54: attribution.v1.ListSnapshotsRequest.model:type_name -> attribution.v1.AttributionModel + 17, // 55: attribution.v1.ListSnapshotsResponse.snapshots:type_name -> attribution.v1.AttributionSnapshot + 21, // 56: attribution.v1.AttributionService.GenerateReport:input_type -> attribution.v1.GenerateReportRequest + 23, // 57: attribution.v1.AttributionService.GetReport:input_type -> attribution.v1.GetReportRequest + 25, // 58: attribution.v1.AttributionService.ListReports:input_type -> attribution.v1.ListReportsRequest + 27, // 59: attribution.v1.AttributionService.ExportReport:input_type -> attribution.v1.ExportReportRequest + 29, // 60: attribution.v1.AttributionService.RecordSignals:input_type -> attribution.v1.RecordSignalsRequest + 31, // 61: attribution.v1.AttributionService.GetSnapshot:input_type -> attribution.v1.GetSnapshotRequest + 33, // 62: attribution.v1.AttributionService.ListSnapshots:input_type -> attribution.v1.ListSnapshotsRequest + 22, // 63: attribution.v1.AttributionService.GenerateReport:output_type -> attribution.v1.GenerateReportResponse + 24, // 64: attribution.v1.AttributionService.GetReport:output_type -> attribution.v1.GetReportResponse + 26, // 65: attribution.v1.AttributionService.ListReports:output_type -> attribution.v1.ListReportsResponse + 28, // 66: attribution.v1.AttributionService.ExportReport:output_type -> attribution.v1.ExportReportResponse + 30, // 67: attribution.v1.AttributionService.RecordSignals:output_type -> attribution.v1.RecordSignalsResponse + 32, // 68: attribution.v1.AttributionService.GetSnapshot:output_type -> attribution.v1.GetSnapshotResponse + 34, // 69: attribution.v1.AttributionService.ListSnapshots:output_type -> attribution.v1.ListSnapshotsResponse + 63, // [63:70] is the sub-list for method output_type + 56, // [56:63] is the sub-list for method input_type + 56, // [56:56] is the sub-list for extension type_name + 56, // [56:56] is the sub-list for extension extendee + 0, // [0:56] is the sub-list for field type_name } func init() { file_attribution_v1_attribution_proto_init() } @@ -1600,13 +3018,21 @@ func file_attribution_v1_attribution_proto_init() { if File_attribution_v1_attribution_proto != nil { return } + file_attribution_v1_attribution_proto_msgTypes[13].OneofWrappers = []any{ + (*AttributionSnapshot_Deal)(nil), + (*AttributionSnapshot_ObjectiveOutcome)(nil), + } + file_attribution_v1_attribution_proto_msgTypes[16].OneofWrappers = []any{ + (*AttributionSignal_ObjectiveCompletion)(nil), + (*AttributionSignal_TraceCompletion)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_attribution_v1_attribution_proto_rawDesc), len(file_attribution_v1_attribution_proto_rawDesc)), - NumEnums: 2, - NumMessages: 17, + NumEnums: 4, + NumMessages: 31, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/go/attribution/v1/attributionv1connect/attribution.connect.go b/gen/go/attribution/v1/attributionv1connect/attribution.connect.go index f7c37f4..3b48af0 100644 --- a/gen/go/attribution/v1/attributionv1connect/attribution.connect.go +++ b/gen/go/attribution/v1/attributionv1connect/attribution.connect.go @@ -45,6 +45,15 @@ const ( // AttributionServiceExportReportProcedure is the fully-qualified name of the AttributionService's // ExportReport RPC. AttributionServiceExportReportProcedure = "/attribution.v1.AttributionService/ExportReport" + // AttributionServiceRecordSignalsProcedure is the fully-qualified name of the AttributionService's + // RecordSignals RPC. + AttributionServiceRecordSignalsProcedure = "/attribution.v1.AttributionService/RecordSignals" + // AttributionServiceGetSnapshotProcedure is the fully-qualified name of the AttributionService's + // GetSnapshot RPC. + AttributionServiceGetSnapshotProcedure = "/attribution.v1.AttributionService/GetSnapshot" + // AttributionServiceListSnapshotsProcedure is the fully-qualified name of the AttributionService's + // ListSnapshots RPC. + AttributionServiceListSnapshotsProcedure = "/attribution.v1.AttributionService/ListSnapshots" ) // AttributionServiceClient is a client for the attribution.v1.AttributionService service. @@ -53,6 +62,9 @@ type AttributionServiceClient interface { GetReport(context.Context, *connect.Request[v1.GetReportRequest]) (*connect.Response[v1.GetReportResponse], error) ListReports(context.Context, *connect.Request[v1.ListReportsRequest]) (*connect.Response[v1.ListReportsResponse], error) ExportReport(context.Context, *connect.Request[v1.ExportReportRequest]) (*connect.Response[v1.ExportReportResponse], error) + RecordSignals(context.Context, *connect.Request[v1.RecordSignalsRequest]) (*connect.Response[v1.RecordSignalsResponse], error) + GetSnapshot(context.Context, *connect.Request[v1.GetSnapshotRequest]) (*connect.Response[v1.GetSnapshotResponse], error) + ListSnapshots(context.Context, *connect.Request[v1.ListSnapshotsRequest]) (*connect.Response[v1.ListSnapshotsResponse], error) } // NewAttributionServiceClient constructs a client for the attribution.v1.AttributionService @@ -90,6 +102,24 @@ func NewAttributionServiceClient(httpClient connect.HTTPClient, baseURL string, connect.WithSchema(attributionServiceMethods.ByName("ExportReport")), connect.WithClientOptions(opts...), ), + recordSignals: connect.NewClient[v1.RecordSignalsRequest, v1.RecordSignalsResponse]( + httpClient, + baseURL+AttributionServiceRecordSignalsProcedure, + connect.WithSchema(attributionServiceMethods.ByName("RecordSignals")), + connect.WithClientOptions(opts...), + ), + getSnapshot: connect.NewClient[v1.GetSnapshotRequest, v1.GetSnapshotResponse]( + httpClient, + baseURL+AttributionServiceGetSnapshotProcedure, + connect.WithSchema(attributionServiceMethods.ByName("GetSnapshot")), + connect.WithClientOptions(opts...), + ), + listSnapshots: connect.NewClient[v1.ListSnapshotsRequest, v1.ListSnapshotsResponse]( + httpClient, + baseURL+AttributionServiceListSnapshotsProcedure, + connect.WithSchema(attributionServiceMethods.ByName("ListSnapshots")), + connect.WithClientOptions(opts...), + ), } } @@ -99,6 +129,9 @@ type attributionServiceClient struct { getReport *connect.Client[v1.GetReportRequest, v1.GetReportResponse] listReports *connect.Client[v1.ListReportsRequest, v1.ListReportsResponse] exportReport *connect.Client[v1.ExportReportRequest, v1.ExportReportResponse] + recordSignals *connect.Client[v1.RecordSignalsRequest, v1.RecordSignalsResponse] + getSnapshot *connect.Client[v1.GetSnapshotRequest, v1.GetSnapshotResponse] + listSnapshots *connect.Client[v1.ListSnapshotsRequest, v1.ListSnapshotsResponse] } // GenerateReport calls attribution.v1.AttributionService.GenerateReport. @@ -121,12 +154,30 @@ func (c *attributionServiceClient) ExportReport(ctx context.Context, req *connec return c.exportReport.CallUnary(ctx, req) } +// RecordSignals calls attribution.v1.AttributionService.RecordSignals. +func (c *attributionServiceClient) RecordSignals(ctx context.Context, req *connect.Request[v1.RecordSignalsRequest]) (*connect.Response[v1.RecordSignalsResponse], error) { + return c.recordSignals.CallUnary(ctx, req) +} + +// GetSnapshot calls attribution.v1.AttributionService.GetSnapshot. +func (c *attributionServiceClient) GetSnapshot(ctx context.Context, req *connect.Request[v1.GetSnapshotRequest]) (*connect.Response[v1.GetSnapshotResponse], error) { + return c.getSnapshot.CallUnary(ctx, req) +} + +// ListSnapshots calls attribution.v1.AttributionService.ListSnapshots. +func (c *attributionServiceClient) ListSnapshots(ctx context.Context, req *connect.Request[v1.ListSnapshotsRequest]) (*connect.Response[v1.ListSnapshotsResponse], error) { + return c.listSnapshots.CallUnary(ctx, req) +} + // AttributionServiceHandler is an implementation of the attribution.v1.AttributionService service. type AttributionServiceHandler interface { GenerateReport(context.Context, *connect.Request[v1.GenerateReportRequest]) (*connect.Response[v1.GenerateReportResponse], error) GetReport(context.Context, *connect.Request[v1.GetReportRequest]) (*connect.Response[v1.GetReportResponse], error) ListReports(context.Context, *connect.Request[v1.ListReportsRequest]) (*connect.Response[v1.ListReportsResponse], error) ExportReport(context.Context, *connect.Request[v1.ExportReportRequest]) (*connect.Response[v1.ExportReportResponse], error) + RecordSignals(context.Context, *connect.Request[v1.RecordSignalsRequest]) (*connect.Response[v1.RecordSignalsResponse], error) + GetSnapshot(context.Context, *connect.Request[v1.GetSnapshotRequest]) (*connect.Response[v1.GetSnapshotResponse], error) + ListSnapshots(context.Context, *connect.Request[v1.ListSnapshotsRequest]) (*connect.Response[v1.ListSnapshotsResponse], error) } // NewAttributionServiceHandler builds an HTTP handler from the service implementation. It returns @@ -160,6 +211,24 @@ func NewAttributionServiceHandler(svc AttributionServiceHandler, opts ...connect connect.WithSchema(attributionServiceMethods.ByName("ExportReport")), connect.WithHandlerOptions(opts...), ) + attributionServiceRecordSignalsHandler := connect.NewUnaryHandler( + AttributionServiceRecordSignalsProcedure, + svc.RecordSignals, + connect.WithSchema(attributionServiceMethods.ByName("RecordSignals")), + connect.WithHandlerOptions(opts...), + ) + attributionServiceGetSnapshotHandler := connect.NewUnaryHandler( + AttributionServiceGetSnapshotProcedure, + svc.GetSnapshot, + connect.WithSchema(attributionServiceMethods.ByName("GetSnapshot")), + connect.WithHandlerOptions(opts...), + ) + attributionServiceListSnapshotsHandler := connect.NewUnaryHandler( + AttributionServiceListSnapshotsProcedure, + svc.ListSnapshots, + connect.WithSchema(attributionServiceMethods.ByName("ListSnapshots")), + connect.WithHandlerOptions(opts...), + ) return "/attribution.v1.AttributionService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case AttributionServiceGenerateReportProcedure: @@ -170,6 +239,12 @@ func NewAttributionServiceHandler(svc AttributionServiceHandler, opts ...connect attributionServiceListReportsHandler.ServeHTTP(w, r) case AttributionServiceExportReportProcedure: attributionServiceExportReportHandler.ServeHTTP(w, r) + case AttributionServiceRecordSignalsProcedure: + attributionServiceRecordSignalsHandler.ServeHTTP(w, r) + case AttributionServiceGetSnapshotProcedure: + attributionServiceGetSnapshotHandler.ServeHTTP(w, r) + case AttributionServiceListSnapshotsProcedure: + attributionServiceListSnapshotsHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -194,3 +269,15 @@ func (UnimplementedAttributionServiceHandler) ListReports(context.Context, *conn func (UnimplementedAttributionServiceHandler) ExportReport(context.Context, *connect.Request[v1.ExportReportRequest]) (*connect.Response[v1.ExportReportResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("attribution.v1.AttributionService.ExportReport is not implemented")) } + +func (UnimplementedAttributionServiceHandler) RecordSignals(context.Context, *connect.Request[v1.RecordSignalsRequest]) (*connect.Response[v1.RecordSignalsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("attribution.v1.AttributionService.RecordSignals is not implemented")) +} + +func (UnimplementedAttributionServiceHandler) GetSnapshot(context.Context, *connect.Request[v1.GetSnapshotRequest]) (*connect.Response[v1.GetSnapshotResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("attribution.v1.AttributionService.GetSnapshot is not implemented")) +} + +func (UnimplementedAttributionServiceHandler) ListSnapshots(context.Context, *connect.Request[v1.ListSnapshotsRequest]) (*connect.Response[v1.ListSnapshotsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("attribution.v1.AttributionService.ListSnapshots is not implemented")) +} diff --git a/gen/go/entities/v1/entities.pb.go b/gen/go/entities/v1/entities.pb.go index f501c3e..9abb2e9 100644 --- a/gen/go/entities/v1/entities.pb.go +++ b/gen/go/entities/v1/entities.pb.go @@ -1099,6 +1099,298 @@ func (x *UnlinkEntityResponse) GetEntity() *CanonicalEntity { return nil } +type CrossSystemRefKey struct { + state protoimpl.MessageState `protogen:"open.v1"` + IntegrationId string `protobuf:"bytes,1,opt,name=integration_id,json=integrationId,proto3" json:"integration_id,omitempty"` + RecordId string `protobuf:"bytes,2,opt,name=record_id,json=recordId,proto3" json:"record_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CrossSystemRefKey) Reset() { + *x = CrossSystemRefKey{} + mi := &file_entities_v1_entities_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CrossSystemRefKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CrossSystemRefKey) ProtoMessage() {} + +func (x *CrossSystemRefKey) ProtoReflect() protoreflect.Message { + mi := &file_entities_v1_entities_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) +} + +// Deprecated: Use CrossSystemRefKey.ProtoReflect.Descriptor instead. +func (*CrossSystemRefKey) Descriptor() ([]byte, []int) { + return file_entities_v1_entities_proto_rawDescGZIP(), []int{16} +} + +func (x *CrossSystemRefKey) GetIntegrationId() string { + if x != nil { + return x.IntegrationId + } + return "" +} + +func (x *CrossSystemRefKey) GetRecordId() string { + if x != nil { + return x.RecordId + } + return "" +} + +type MergeEntitiesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + TargetCanonicalEntityId string `protobuf:"bytes,1,opt,name=target_canonical_entity_id,json=targetCanonicalEntityId,proto3" json:"target_canonical_entity_id,omitempty"` + SourceCanonicalEntityIds []string `protobuf:"bytes,2,rep,name=source_canonical_entity_ids,json=sourceCanonicalEntityIds,proto3" json:"source_canonical_entity_ids,omitempty"` + PrimaryType EntityType `protobuf:"varint,3,opt,name=primary_type,json=primaryType,proto3,enum=entities.v1.EntityType" json:"primary_type,omitempty"` + PrimaryName string `protobuf:"bytes,4,opt,name=primary_name,json=primaryName,proto3" json:"primary_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MergeEntitiesRequest) Reset() { + *x = MergeEntitiesRequest{} + mi := &file_entities_v1_entities_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MergeEntitiesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MergeEntitiesRequest) ProtoMessage() {} + +func (x *MergeEntitiesRequest) ProtoReflect() protoreflect.Message { + mi := &file_entities_v1_entities_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MergeEntitiesRequest.ProtoReflect.Descriptor instead. +func (*MergeEntitiesRequest) Descriptor() ([]byte, []int) { + return file_entities_v1_entities_proto_rawDescGZIP(), []int{17} +} + +func (x *MergeEntitiesRequest) GetTargetCanonicalEntityId() string { + if x != nil { + return x.TargetCanonicalEntityId + } + return "" +} + +func (x *MergeEntitiesRequest) GetSourceCanonicalEntityIds() []string { + if x != nil { + return x.SourceCanonicalEntityIds + } + return nil +} + +func (x *MergeEntitiesRequest) GetPrimaryType() EntityType { + if x != nil { + return x.PrimaryType + } + return EntityType_ENTITY_TYPE_UNSPECIFIED +} + +func (x *MergeEntitiesRequest) GetPrimaryName() string { + if x != nil { + return x.PrimaryName + } + return "" +} + +type MergeEntitiesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Entity *CanonicalEntity `protobuf:"bytes,1,opt,name=entity,proto3" json:"entity,omitempty"` + MergedEntities []*CanonicalEntity `protobuf:"bytes,2,rep,name=merged_entities,json=mergedEntities,proto3" json:"merged_entities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MergeEntitiesResponse) Reset() { + *x = MergeEntitiesResponse{} + mi := &file_entities_v1_entities_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MergeEntitiesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MergeEntitiesResponse) ProtoMessage() {} + +func (x *MergeEntitiesResponse) ProtoReflect() protoreflect.Message { + mi := &file_entities_v1_entities_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MergeEntitiesResponse.ProtoReflect.Descriptor instead. +func (*MergeEntitiesResponse) Descriptor() ([]byte, []int) { + return file_entities_v1_entities_proto_rawDescGZIP(), []int{18} +} + +func (x *MergeEntitiesResponse) GetEntity() *CanonicalEntity { + if x != nil { + return x.Entity + } + return nil +} + +func (x *MergeEntitiesResponse) GetMergedEntities() []*CanonicalEntity { + if x != nil { + return x.MergedEntities + } + return nil +} + +type SplitEntityRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + CanonicalEntityId string `protobuf:"bytes,1,opt,name=canonical_entity_id,json=canonicalEntityId,proto3" json:"canonical_entity_id,omitempty"` + Refs []*CrossSystemRefKey `protobuf:"bytes,2,rep,name=refs,proto3" json:"refs,omitempty"` + NewPrimaryType EntityType `protobuf:"varint,3,opt,name=new_primary_type,json=newPrimaryType,proto3,enum=entities.v1.EntityType" json:"new_primary_type,omitempty"` + NewPrimaryName string `protobuf:"bytes,4,opt,name=new_primary_name,json=newPrimaryName,proto3" json:"new_primary_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SplitEntityRequest) Reset() { + *x = SplitEntityRequest{} + mi := &file_entities_v1_entities_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SplitEntityRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SplitEntityRequest) ProtoMessage() {} + +func (x *SplitEntityRequest) ProtoReflect() protoreflect.Message { + mi := &file_entities_v1_entities_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SplitEntityRequest.ProtoReflect.Descriptor instead. +func (*SplitEntityRequest) Descriptor() ([]byte, []int) { + return file_entities_v1_entities_proto_rawDescGZIP(), []int{19} +} + +func (x *SplitEntityRequest) GetCanonicalEntityId() string { + if x != nil { + return x.CanonicalEntityId + } + return "" +} + +func (x *SplitEntityRequest) GetRefs() []*CrossSystemRefKey { + if x != nil { + return x.Refs + } + return nil +} + +func (x *SplitEntityRequest) GetNewPrimaryType() EntityType { + if x != nil { + return x.NewPrimaryType + } + return EntityType_ENTITY_TYPE_UNSPECIFIED +} + +func (x *SplitEntityRequest) GetNewPrimaryName() string { + if x != nil { + return x.NewPrimaryName + } + return "" +} + +type SplitEntityResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + SourceEntity *CanonicalEntity `protobuf:"bytes,1,opt,name=source_entity,json=sourceEntity,proto3" json:"source_entity,omitempty"` + SplitEntity *CanonicalEntity `protobuf:"bytes,2,opt,name=split_entity,json=splitEntity,proto3" json:"split_entity,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SplitEntityResponse) Reset() { + *x = SplitEntityResponse{} + mi := &file_entities_v1_entities_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SplitEntityResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SplitEntityResponse) ProtoMessage() {} + +func (x *SplitEntityResponse) ProtoReflect() protoreflect.Message { + mi := &file_entities_v1_entities_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SplitEntityResponse.ProtoReflect.Descriptor instead. +func (*SplitEntityResponse) Descriptor() ([]byte, []int) { + return file_entities_v1_entities_proto_rawDescGZIP(), []int{20} +} + +func (x *SplitEntityResponse) GetSourceEntity() *CanonicalEntity { + if x != nil { + return x.SourceEntity + } + return nil +} + +func (x *SplitEntityResponse) GetSplitEntity() *CanonicalEntity { + if x != nil { + return x.SplitEntity + } + return nil +} + type GetCorrelationGraphRequest struct { state protoimpl.MessageState `protogen:"open.v1"` CanonicalEntityId string `protobuf:"bytes,1,opt,name=canonical_entity_id,json=canonicalEntityId,proto3" json:"canonical_entity_id,omitempty"` @@ -1109,7 +1401,7 @@ type GetCorrelationGraphRequest struct { func (x *GetCorrelationGraphRequest) Reset() { *x = GetCorrelationGraphRequest{} - mi := &file_entities_v1_entities_proto_msgTypes[16] + mi := &file_entities_v1_entities_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1121,7 +1413,7 @@ func (x *GetCorrelationGraphRequest) String() string { func (*GetCorrelationGraphRequest) ProtoMessage() {} func (x *GetCorrelationGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_entities_v1_entities_proto_msgTypes[16] + mi := &file_entities_v1_entities_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1134,7 +1426,7 @@ func (x *GetCorrelationGraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCorrelationGraphRequest.ProtoReflect.Descriptor instead. func (*GetCorrelationGraphRequest) Descriptor() ([]byte, []int) { - return file_entities_v1_entities_proto_rawDescGZIP(), []int{16} + return file_entities_v1_entities_proto_rawDescGZIP(), []int{21} } func (x *GetCorrelationGraphRequest) GetCanonicalEntityId() string { @@ -1160,7 +1452,7 @@ type GetCorrelationGraphResponse struct { func (x *GetCorrelationGraphResponse) Reset() { *x = GetCorrelationGraphResponse{} - mi := &file_entities_v1_entities_proto_msgTypes[17] + mi := &file_entities_v1_entities_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1172,7 +1464,7 @@ func (x *GetCorrelationGraphResponse) String() string { func (*GetCorrelationGraphResponse) ProtoMessage() {} func (x *GetCorrelationGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_entities_v1_entities_proto_msgTypes[17] + mi := &file_entities_v1_entities_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1185,7 +1477,7 @@ func (x *GetCorrelationGraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCorrelationGraphResponse.ProtoReflect.Descriptor instead. func (*GetCorrelationGraphResponse) Descriptor() ([]byte, []int) { - return file_entities_v1_entities_proto_rawDescGZIP(), []int{17} + return file_entities_v1_entities_proto_rawDescGZIP(), []int{22} } func (x *GetCorrelationGraphResponse) GetGroups() []*CorrelationGroup { @@ -1210,7 +1502,7 @@ type IngestResultRequest struct { func (x *IngestResultRequest) Reset() { *x = IngestResultRequest{} - mi := &file_entities_v1_entities_proto_msgTypes[18] + mi := &file_entities_v1_entities_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1222,7 +1514,7 @@ func (x *IngestResultRequest) String() string { func (*IngestResultRequest) ProtoMessage() {} func (x *IngestResultRequest) ProtoReflect() protoreflect.Message { - mi := &file_entities_v1_entities_proto_msgTypes[18] + mi := &file_entities_v1_entities_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1235,7 +1527,7 @@ func (x *IngestResultRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IngestResultRequest.ProtoReflect.Descriptor instead. func (*IngestResultRequest) Descriptor() ([]byte, []int) { - return file_entities_v1_entities_proto_rawDescGZIP(), []int{18} + return file_entities_v1_entities_proto_rawDescGZIP(), []int{23} } func (x *IngestResultRequest) GetWorkspaceId() string { @@ -1297,7 +1589,7 @@ type IngestResultResponse struct { func (x *IngestResultResponse) Reset() { *x = IngestResultResponse{} - mi := &file_entities_v1_entities_proto_msgTypes[19] + mi := &file_entities_v1_entities_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1309,7 +1601,7 @@ func (x *IngestResultResponse) String() string { func (*IngestResultResponse) ProtoMessage() {} func (x *IngestResultResponse) ProtoReflect() protoreflect.Message { - mi := &file_entities_v1_entities_proto_msgTypes[19] + mi := &file_entities_v1_entities_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1322,7 +1614,7 @@ func (x *IngestResultResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use IngestResultResponse.ProtoReflect.Descriptor instead. func (*IngestResultResponse) Descriptor() ([]byte, []int) { - return file_entities_v1_entities_proto_rawDescGZIP(), []int{19} + return file_entities_v1_entities_proto_rawDescGZIP(), []int{24} } func (x *IngestResultResponse) GetEntity() *CanonicalEntity { @@ -1415,7 +1707,26 @@ const file_entities_v1_entities_proto_rawDesc = "" + "\x0eintegration_id\x18\x02 \x01(\tR\rintegrationId\x12\x1b\n" + "\trecord_id\x18\x03 \x01(\tR\brecordId\"L\n" + "\x14UnlinkEntityResponse\x124\n" + - "\x06entity\x18\x01 \x01(\v2\x1c.entities.v1.CanonicalEntityR\x06entity\"b\n" + + "\x06entity\x18\x01 \x01(\v2\x1c.entities.v1.CanonicalEntityR\x06entity\"W\n" + + "\x11CrossSystemRefKey\x12%\n" + + "\x0eintegration_id\x18\x01 \x01(\tR\rintegrationId\x12\x1b\n" + + "\trecord_id\x18\x02 \x01(\tR\brecordId\"\xf1\x01\n" + + "\x14MergeEntitiesRequest\x12;\n" + + "\x1atarget_canonical_entity_id\x18\x01 \x01(\tR\x17targetCanonicalEntityId\x12=\n" + + "\x1bsource_canonical_entity_ids\x18\x02 \x03(\tR\x18sourceCanonicalEntityIds\x12:\n" + + "\fprimary_type\x18\x03 \x01(\x0e2\x17.entities.v1.EntityTypeR\vprimaryType\x12!\n" + + "\fprimary_name\x18\x04 \x01(\tR\vprimaryName\"\x94\x01\n" + + "\x15MergeEntitiesResponse\x124\n" + + "\x06entity\x18\x01 \x01(\v2\x1c.entities.v1.CanonicalEntityR\x06entity\x12E\n" + + "\x0fmerged_entities\x18\x02 \x03(\v2\x1c.entities.v1.CanonicalEntityR\x0emergedEntities\"\xe5\x01\n" + + "\x12SplitEntityRequest\x12.\n" + + "\x13canonical_entity_id\x18\x01 \x01(\tR\x11canonicalEntityId\x122\n" + + "\x04refs\x18\x02 \x03(\v2\x1e.entities.v1.CrossSystemRefKeyR\x04refs\x12A\n" + + "\x10new_primary_type\x18\x03 \x01(\x0e2\x17.entities.v1.EntityTypeR\x0enewPrimaryType\x12(\n" + + "\x10new_primary_name\x18\x04 \x01(\tR\x0enewPrimaryName\"\x99\x01\n" + + "\x13SplitEntityResponse\x12A\n" + + "\rsource_entity\x18\x01 \x01(\v2\x1c.entities.v1.CanonicalEntityR\fsourceEntity\x12?\n" + + "\fsplit_entity\x18\x02 \x01(\v2\x1c.entities.v1.CanonicalEntityR\vsplitEntity\"b\n" + "\x1aGetCorrelationGraphRequest\x12.\n" + "\x13canonical_entity_id\x18\x01 \x01(\tR\x11canonicalEntityId\x12\x14\n" + "\x05depth\x18\x02 \x01(\x05R\x05depth\"T\n" + @@ -1448,7 +1759,7 @@ const file_entities_v1_entities_proto_rawDesc = "" + "\x13MATCH_METHOD_DOMAIN\x10\x02\x12\x1d\n" + "\x19MATCH_METHOD_COMPANY_NAME\x10\x03\x12\x1c\n" + "\x18MATCH_METHOD_RECORD_NAME\x10\x04\x12\x17\n" + - "\x13MATCH_METHOD_MANUAL\x10\x052\x9c\x05\n" + + "\x13MATCH_METHOD_MANUAL\x10\x052\xc6\x06\n" + "\rEntityService\x12D\n" + "\aResolve\x12\x1b.entities.v1.ResolveRequest\x1a\x1c.entities.v1.ResolveResponse\x12J\n" + "\tCorrelate\x12\x1d.entities.v1.CorrelateRequest\x1a\x1e.entities.v1.CorrelateResponse\x12S\n" + @@ -1456,7 +1767,9 @@ const file_entities_v1_entities_proto_rawDesc = "" + "\x06Search\x12\x1a.entities.v1.SearchRequest\x1a\x1b.entities.v1.SearchResponse\x12M\n" + "\n" + "LinkEntity\x12\x1e.entities.v1.LinkEntityRequest\x1a\x1f.entities.v1.LinkEntityResponse\x12S\n" + - "\fUnlinkEntity\x12 .entities.v1.UnlinkEntityRequest\x1a!.entities.v1.UnlinkEntityResponse\x12h\n" + + "\fUnlinkEntity\x12 .entities.v1.UnlinkEntityRequest\x1a!.entities.v1.UnlinkEntityResponse\x12V\n" + + "\rMergeEntities\x12!.entities.v1.MergeEntitiesRequest\x1a\".entities.v1.MergeEntitiesResponse\x12P\n" + + "\vSplitEntity\x12\x1f.entities.v1.SplitEntityRequest\x1a .entities.v1.SplitEntityResponse\x12h\n" + "\x13GetCorrelationGraph\x12'.entities.v1.GetCorrelationGraphRequest\x1a(.entities.v1.GetCorrelationGraphResponse\x12S\n" + "\fIngestResult\x12 .entities.v1.IngestResultRequest\x1a!.entities.v1.IngestResultResponseB8Z6github.com/evalops/proto/gen/go/entities/v1;entitiesv1b\x06proto3" @@ -1473,7 +1786,7 @@ func file_entities_v1_entities_proto_rawDescGZIP() []byte { } var file_entities_v1_entities_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_entities_v1_entities_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_entities_v1_entities_proto_msgTypes = make([]protoimpl.MessageInfo, 25) var file_entities_v1_entities_proto_goTypes = []any{ (EntityType)(0), // 0: entities.v1.EntityType (MatchMethod)(0), // 1: entities.v1.MatchMethod @@ -1493,17 +1806,22 @@ var file_entities_v1_entities_proto_goTypes = []any{ (*LinkEntityResponse)(nil), // 15: entities.v1.LinkEntityResponse (*UnlinkEntityRequest)(nil), // 16: entities.v1.UnlinkEntityRequest (*UnlinkEntityResponse)(nil), // 17: entities.v1.UnlinkEntityResponse - (*GetCorrelationGraphRequest)(nil), // 18: entities.v1.GetCorrelationGraphRequest - (*GetCorrelationGraphResponse)(nil), // 19: entities.v1.GetCorrelationGraphResponse - (*IngestResultRequest)(nil), // 20: entities.v1.IngestResultRequest - (*IngestResultResponse)(nil), // 21: entities.v1.IngestResultResponse - (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp + (*CrossSystemRefKey)(nil), // 18: entities.v1.CrossSystemRefKey + (*MergeEntitiesRequest)(nil), // 19: entities.v1.MergeEntitiesRequest + (*MergeEntitiesResponse)(nil), // 20: entities.v1.MergeEntitiesResponse + (*SplitEntityRequest)(nil), // 21: entities.v1.SplitEntityRequest + (*SplitEntityResponse)(nil), // 22: entities.v1.SplitEntityResponse + (*GetCorrelationGraphRequest)(nil), // 23: entities.v1.GetCorrelationGraphRequest + (*GetCorrelationGraphResponse)(nil), // 24: entities.v1.GetCorrelationGraphResponse + (*IngestResultRequest)(nil), // 25: entities.v1.IngestResultRequest + (*IngestResultResponse)(nil), // 26: entities.v1.IngestResultResponse + (*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp } var file_entities_v1_entities_proto_depIdxs = []int32{ 0, // 0: entities.v1.CanonicalEntity.primary_type:type_name -> entities.v1.EntityType 3, // 1: entities.v1.CanonicalEntity.refs:type_name -> entities.v1.CrossSystemRef - 22, // 2: entities.v1.CanonicalEntity.created_at:type_name -> google.protobuf.Timestamp - 22, // 3: entities.v1.CanonicalEntity.updated_at:type_name -> google.protobuf.Timestamp + 27, // 2: entities.v1.CanonicalEntity.created_at:type_name -> google.protobuf.Timestamp + 27, // 3: entities.v1.CanonicalEntity.updated_at:type_name -> google.protobuf.Timestamp 0, // 4: entities.v1.CrossSystemRef.entity_type:type_name -> entities.v1.EntityType 1, // 5: entities.v1.CorrelationMatch.matched_by:type_name -> entities.v1.MatchMethod 0, // 6: entities.v1.CorrelationGroup.primary_type:type_name -> entities.v1.EntityType @@ -1517,30 +1835,41 @@ var file_entities_v1_entities_proto_depIdxs = []int32{ 3, // 14: entities.v1.LinkEntityRequest.ref:type_name -> entities.v1.CrossSystemRef 2, // 15: entities.v1.LinkEntityResponse.entity:type_name -> entities.v1.CanonicalEntity 2, // 16: entities.v1.UnlinkEntityResponse.entity:type_name -> entities.v1.CanonicalEntity - 5, // 17: entities.v1.GetCorrelationGraphResponse.groups:type_name -> entities.v1.CorrelationGroup - 0, // 18: entities.v1.IngestResultRequest.entity_type:type_name -> entities.v1.EntityType - 2, // 19: entities.v1.IngestResultResponse.entity:type_name -> entities.v1.CanonicalEntity - 6, // 20: entities.v1.EntityService.Resolve:input_type -> entities.v1.ResolveRequest - 8, // 21: entities.v1.EntityService.Correlate:input_type -> entities.v1.CorrelateRequest - 10, // 22: entities.v1.EntityService.GetCanonical:input_type -> entities.v1.GetCanonicalRequest - 12, // 23: entities.v1.EntityService.Search:input_type -> entities.v1.SearchRequest - 14, // 24: entities.v1.EntityService.LinkEntity:input_type -> entities.v1.LinkEntityRequest - 16, // 25: entities.v1.EntityService.UnlinkEntity:input_type -> entities.v1.UnlinkEntityRequest - 18, // 26: entities.v1.EntityService.GetCorrelationGraph:input_type -> entities.v1.GetCorrelationGraphRequest - 20, // 27: entities.v1.EntityService.IngestResult:input_type -> entities.v1.IngestResultRequest - 7, // 28: entities.v1.EntityService.Resolve:output_type -> entities.v1.ResolveResponse - 9, // 29: entities.v1.EntityService.Correlate:output_type -> entities.v1.CorrelateResponse - 11, // 30: entities.v1.EntityService.GetCanonical:output_type -> entities.v1.GetCanonicalResponse - 13, // 31: entities.v1.EntityService.Search:output_type -> entities.v1.SearchResponse - 15, // 32: entities.v1.EntityService.LinkEntity:output_type -> entities.v1.LinkEntityResponse - 17, // 33: entities.v1.EntityService.UnlinkEntity:output_type -> entities.v1.UnlinkEntityResponse - 19, // 34: entities.v1.EntityService.GetCorrelationGraph:output_type -> entities.v1.GetCorrelationGraphResponse - 21, // 35: entities.v1.EntityService.IngestResult:output_type -> entities.v1.IngestResultResponse - 28, // [28:36] is the sub-list for method output_type - 20, // [20:28] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 0, // 17: entities.v1.MergeEntitiesRequest.primary_type:type_name -> entities.v1.EntityType + 2, // 18: entities.v1.MergeEntitiesResponse.entity:type_name -> entities.v1.CanonicalEntity + 2, // 19: entities.v1.MergeEntitiesResponse.merged_entities:type_name -> entities.v1.CanonicalEntity + 18, // 20: entities.v1.SplitEntityRequest.refs:type_name -> entities.v1.CrossSystemRefKey + 0, // 21: entities.v1.SplitEntityRequest.new_primary_type:type_name -> entities.v1.EntityType + 2, // 22: entities.v1.SplitEntityResponse.source_entity:type_name -> entities.v1.CanonicalEntity + 2, // 23: entities.v1.SplitEntityResponse.split_entity:type_name -> entities.v1.CanonicalEntity + 5, // 24: entities.v1.GetCorrelationGraphResponse.groups:type_name -> entities.v1.CorrelationGroup + 0, // 25: entities.v1.IngestResultRequest.entity_type:type_name -> entities.v1.EntityType + 2, // 26: entities.v1.IngestResultResponse.entity:type_name -> entities.v1.CanonicalEntity + 6, // 27: entities.v1.EntityService.Resolve:input_type -> entities.v1.ResolveRequest + 8, // 28: entities.v1.EntityService.Correlate:input_type -> entities.v1.CorrelateRequest + 10, // 29: entities.v1.EntityService.GetCanonical:input_type -> entities.v1.GetCanonicalRequest + 12, // 30: entities.v1.EntityService.Search:input_type -> entities.v1.SearchRequest + 14, // 31: entities.v1.EntityService.LinkEntity:input_type -> entities.v1.LinkEntityRequest + 16, // 32: entities.v1.EntityService.UnlinkEntity:input_type -> entities.v1.UnlinkEntityRequest + 19, // 33: entities.v1.EntityService.MergeEntities:input_type -> entities.v1.MergeEntitiesRequest + 21, // 34: entities.v1.EntityService.SplitEntity:input_type -> entities.v1.SplitEntityRequest + 23, // 35: entities.v1.EntityService.GetCorrelationGraph:input_type -> entities.v1.GetCorrelationGraphRequest + 25, // 36: entities.v1.EntityService.IngestResult:input_type -> entities.v1.IngestResultRequest + 7, // 37: entities.v1.EntityService.Resolve:output_type -> entities.v1.ResolveResponse + 9, // 38: entities.v1.EntityService.Correlate:output_type -> entities.v1.CorrelateResponse + 11, // 39: entities.v1.EntityService.GetCanonical:output_type -> entities.v1.GetCanonicalResponse + 13, // 40: entities.v1.EntityService.Search:output_type -> entities.v1.SearchResponse + 15, // 41: entities.v1.EntityService.LinkEntity:output_type -> entities.v1.LinkEntityResponse + 17, // 42: entities.v1.EntityService.UnlinkEntity:output_type -> entities.v1.UnlinkEntityResponse + 20, // 43: entities.v1.EntityService.MergeEntities:output_type -> entities.v1.MergeEntitiesResponse + 22, // 44: entities.v1.EntityService.SplitEntity:output_type -> entities.v1.SplitEntityResponse + 24, // 45: entities.v1.EntityService.GetCorrelationGraph:output_type -> entities.v1.GetCorrelationGraphResponse + 26, // 46: entities.v1.EntityService.IngestResult:output_type -> entities.v1.IngestResultResponse + 37, // [37:47] is the sub-list for method output_type + 27, // [27:37] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name } func init() { file_entities_v1_entities_proto_init() } @@ -1554,7 +1883,7 @@ func file_entities_v1_entities_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_entities_v1_entities_proto_rawDesc), len(file_entities_v1_entities_proto_rawDesc)), NumEnums: 2, - NumMessages: 20, + NumMessages: 25, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/go/entities/v1/entitiesv1connect/entities.connect.go b/gen/go/entities/v1/entitiesv1connect/entities.connect.go index 56113a2..f4fca89 100644 --- a/gen/go/entities/v1/entitiesv1connect/entities.connect.go +++ b/gen/go/entities/v1/entitiesv1connect/entities.connect.go @@ -48,6 +48,12 @@ const ( // EntityServiceUnlinkEntityProcedure is the fully-qualified name of the EntityService's // UnlinkEntity RPC. EntityServiceUnlinkEntityProcedure = "/entities.v1.EntityService/UnlinkEntity" + // EntityServiceMergeEntitiesProcedure is the fully-qualified name of the EntityService's + // MergeEntities RPC. + EntityServiceMergeEntitiesProcedure = "/entities.v1.EntityService/MergeEntities" + // EntityServiceSplitEntityProcedure is the fully-qualified name of the EntityService's SplitEntity + // RPC. + EntityServiceSplitEntityProcedure = "/entities.v1.EntityService/SplitEntity" // EntityServiceGetCorrelationGraphProcedure is the fully-qualified name of the EntityService's // GetCorrelationGraph RPC. EntityServiceGetCorrelationGraphProcedure = "/entities.v1.EntityService/GetCorrelationGraph" @@ -64,6 +70,8 @@ type EntityServiceClient interface { Search(context.Context, *connect.Request[v1.SearchRequest]) (*connect.Response[v1.SearchResponse], error) LinkEntity(context.Context, *connect.Request[v1.LinkEntityRequest]) (*connect.Response[v1.LinkEntityResponse], error) UnlinkEntity(context.Context, *connect.Request[v1.UnlinkEntityRequest]) (*connect.Response[v1.UnlinkEntityResponse], error) + MergeEntities(context.Context, *connect.Request[v1.MergeEntitiesRequest]) (*connect.Response[v1.MergeEntitiesResponse], error) + SplitEntity(context.Context, *connect.Request[v1.SplitEntityRequest]) (*connect.Response[v1.SplitEntityResponse], error) GetCorrelationGraph(context.Context, *connect.Request[v1.GetCorrelationGraphRequest]) (*connect.Response[v1.GetCorrelationGraphResponse], error) IngestResult(context.Context, *connect.Request[v1.IngestResultRequest]) (*connect.Response[v1.IngestResultResponse], error) } @@ -115,6 +123,18 @@ func NewEntityServiceClient(httpClient connect.HTTPClient, baseURL string, opts connect.WithSchema(entityServiceMethods.ByName("UnlinkEntity")), connect.WithClientOptions(opts...), ), + mergeEntities: connect.NewClient[v1.MergeEntitiesRequest, v1.MergeEntitiesResponse]( + httpClient, + baseURL+EntityServiceMergeEntitiesProcedure, + connect.WithSchema(entityServiceMethods.ByName("MergeEntities")), + connect.WithClientOptions(opts...), + ), + splitEntity: connect.NewClient[v1.SplitEntityRequest, v1.SplitEntityResponse]( + httpClient, + baseURL+EntityServiceSplitEntityProcedure, + connect.WithSchema(entityServiceMethods.ByName("SplitEntity")), + connect.WithClientOptions(opts...), + ), getCorrelationGraph: connect.NewClient[v1.GetCorrelationGraphRequest, v1.GetCorrelationGraphResponse]( httpClient, baseURL+EntityServiceGetCorrelationGraphProcedure, @@ -138,6 +158,8 @@ type entityServiceClient struct { search *connect.Client[v1.SearchRequest, v1.SearchResponse] linkEntity *connect.Client[v1.LinkEntityRequest, v1.LinkEntityResponse] unlinkEntity *connect.Client[v1.UnlinkEntityRequest, v1.UnlinkEntityResponse] + mergeEntities *connect.Client[v1.MergeEntitiesRequest, v1.MergeEntitiesResponse] + splitEntity *connect.Client[v1.SplitEntityRequest, v1.SplitEntityResponse] getCorrelationGraph *connect.Client[v1.GetCorrelationGraphRequest, v1.GetCorrelationGraphResponse] ingestResult *connect.Client[v1.IngestResultRequest, v1.IngestResultResponse] } @@ -172,6 +194,16 @@ func (c *entityServiceClient) UnlinkEntity(ctx context.Context, req *connect.Req return c.unlinkEntity.CallUnary(ctx, req) } +// MergeEntities calls entities.v1.EntityService.MergeEntities. +func (c *entityServiceClient) MergeEntities(ctx context.Context, req *connect.Request[v1.MergeEntitiesRequest]) (*connect.Response[v1.MergeEntitiesResponse], error) { + return c.mergeEntities.CallUnary(ctx, req) +} + +// SplitEntity calls entities.v1.EntityService.SplitEntity. +func (c *entityServiceClient) SplitEntity(ctx context.Context, req *connect.Request[v1.SplitEntityRequest]) (*connect.Response[v1.SplitEntityResponse], error) { + return c.splitEntity.CallUnary(ctx, req) +} + // GetCorrelationGraph calls entities.v1.EntityService.GetCorrelationGraph. func (c *entityServiceClient) GetCorrelationGraph(ctx context.Context, req *connect.Request[v1.GetCorrelationGraphRequest]) (*connect.Response[v1.GetCorrelationGraphResponse], error) { return c.getCorrelationGraph.CallUnary(ctx, req) @@ -190,6 +222,8 @@ type EntityServiceHandler interface { Search(context.Context, *connect.Request[v1.SearchRequest]) (*connect.Response[v1.SearchResponse], error) LinkEntity(context.Context, *connect.Request[v1.LinkEntityRequest]) (*connect.Response[v1.LinkEntityResponse], error) UnlinkEntity(context.Context, *connect.Request[v1.UnlinkEntityRequest]) (*connect.Response[v1.UnlinkEntityResponse], error) + MergeEntities(context.Context, *connect.Request[v1.MergeEntitiesRequest]) (*connect.Response[v1.MergeEntitiesResponse], error) + SplitEntity(context.Context, *connect.Request[v1.SplitEntityRequest]) (*connect.Response[v1.SplitEntityResponse], error) GetCorrelationGraph(context.Context, *connect.Request[v1.GetCorrelationGraphRequest]) (*connect.Response[v1.GetCorrelationGraphResponse], error) IngestResult(context.Context, *connect.Request[v1.IngestResultRequest]) (*connect.Response[v1.IngestResultResponse], error) } @@ -237,6 +271,18 @@ func NewEntityServiceHandler(svc EntityServiceHandler, opts ...connect.HandlerOp connect.WithSchema(entityServiceMethods.ByName("UnlinkEntity")), connect.WithHandlerOptions(opts...), ) + entityServiceMergeEntitiesHandler := connect.NewUnaryHandler( + EntityServiceMergeEntitiesProcedure, + svc.MergeEntities, + connect.WithSchema(entityServiceMethods.ByName("MergeEntities")), + connect.WithHandlerOptions(opts...), + ) + entityServiceSplitEntityHandler := connect.NewUnaryHandler( + EntityServiceSplitEntityProcedure, + svc.SplitEntity, + connect.WithSchema(entityServiceMethods.ByName("SplitEntity")), + connect.WithHandlerOptions(opts...), + ) entityServiceGetCorrelationGraphHandler := connect.NewUnaryHandler( EntityServiceGetCorrelationGraphProcedure, svc.GetCorrelationGraph, @@ -263,6 +309,10 @@ func NewEntityServiceHandler(svc EntityServiceHandler, opts ...connect.HandlerOp entityServiceLinkEntityHandler.ServeHTTP(w, r) case EntityServiceUnlinkEntityProcedure: entityServiceUnlinkEntityHandler.ServeHTTP(w, r) + case EntityServiceMergeEntitiesProcedure: + entityServiceMergeEntitiesHandler.ServeHTTP(w, r) + case EntityServiceSplitEntityProcedure: + entityServiceSplitEntityHandler.ServeHTTP(w, r) case EntityServiceGetCorrelationGraphProcedure: entityServiceGetCorrelationGraphHandler.ServeHTTP(w, r) case EntityServiceIngestResultProcedure: @@ -300,6 +350,14 @@ func (UnimplementedEntityServiceHandler) UnlinkEntity(context.Context, *connect. return nil, connect.NewError(connect.CodeUnimplemented, errors.New("entities.v1.EntityService.UnlinkEntity is not implemented")) } +func (UnimplementedEntityServiceHandler) MergeEntities(context.Context, *connect.Request[v1.MergeEntitiesRequest]) (*connect.Response[v1.MergeEntitiesResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("entities.v1.EntityService.MergeEntities is not implemented")) +} + +func (UnimplementedEntityServiceHandler) SplitEntity(context.Context, *connect.Request[v1.SplitEntityRequest]) (*connect.Response[v1.SplitEntityResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("entities.v1.EntityService.SplitEntity is not implemented")) +} + func (UnimplementedEntityServiceHandler) GetCorrelationGraph(context.Context, *connect.Request[v1.GetCorrelationGraphRequest]) (*connect.Response[v1.GetCorrelationGraphResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("entities.v1.EntityService.GetCorrelationGraph is not implemented")) } diff --git a/gen/python/attribution/v1/attribution_pb2.py b/gen/python/attribution/v1/attribution_pb2.py index f569354..a90c2f2 100644 --- a/gen/python/attribution/v1/attribution_pb2.py +++ b/gen/python/attribution/v1/attribution_pb2.py @@ -26,7 +26,7 @@ from traces.v1 import traces_pb2 as traces_dot_v1_dot_traces__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n attribution/v1/attribution.proto\x12\x0e\x61ttribution.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x16traces/v1/traces.proto\"\xd5\x02\n\x10\x41ttributionQuery\x12!\n\x0cworkspace_id\x18\x01 \x01(\tR\x0bworkspaceId\x12\'\n\x0forganization_id\x18\x02 \x01(\tR\x0eorganizationId\x12\x19\n\x08\x64\x65\x61l_ids\x18\x03 \x03(\tR\x07\x64\x65\x61lIds\x12\x36\n\x05model\x18\x04 \x01(\x0e\x32 .attribution.v1.AttributionModelR\x05model\x12\x39\n\nstart_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12\x30\n\x14include_team_rollups\x18\x07 \x01(\x08R\x12includeTeamRollups\"\xd3\x02\n\x0b\x44\x65\x61lContext\x12\x17\n\x07\x64\x65\x61l_id\x18\x01 \x01(\tR\x06\x64\x65\x61lId\x12\x14\n\x05title\x18\x02 \x01(\tR\x05title\x12\x14\n\x05stage\x18\x03 \x01(\tR\x05stage\x12\x14\n\x05value\x18\x04 \x01(\x01R\x05value\x12\x1a\n\x08\x63urrency\x18\x05 \x01(\tR\x08\x63urrency\x12\x19\n\x08owner_id\x18\x06 \x01(\tR\x07ownerId\x12\x1d\n\ncontact_id\x18\x07 \x01(\tR\tcontactId\x12\x1d\n\ncompany_id\x18\x08 \x01(\tR\tcompanyId\x12\x39\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\"e\n\x0fTraceTouchpoint\x12-\n\x05trace\x18\x01 \x01(\x0b\x32\x17.traces.v1.TraceSummaryR\x05trace\x12#\n\rmatch_reasons\x18\x02 \x03(\tR\x0cmatchReasons\"\xf8\x02\n\x0fUsageTouchpoint\x12\x1b\n\trecord_id\x18\x01 \x01(\tR\x08recordId\x12\x1d\n\nrequest_id\x18\x02 \x01(\tR\trequestId\x12\x19\n\x08\x61gent_id\x18\x03 \x01(\tR\x07\x61gentId\x12\x17\n\x07team_id\x18\x04 \x01(\tR\x06teamId\x12\x18\n\x07surface\x18\x05 \x01(\tR\x07surface\x12\x14\n\x05model\x18\x06 \x01(\tR\x05model\x12\x1a\n\x08provider\x18\x07 \x01(\tR\x08provider\x12!\n\x0cinput_tokens\x18\x08 \x01(\x03R\x0binputTokens\x12#\n\routput_tokens\x18\t \x01(\x03R\x0coutputTokens\x12$\n\x0etotal_cost_usd\x18\n \x01(\x01R\x0ctotalCostUsd\x12;\n\x0bobserved_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nobservedAt\"\xe0\x02\n\x0c\x41gentSummary\x12\x19\n\x08\x61gent_id\x18\x01 \x01(\tR\x07\x61gentId\x12-\n\x12\x61ttribution_weight\x18\x02 \x01(\x01R\x11\x61ttributionWeight\x12\x34\n\x16\x61ttributed_revenue_usd\x18\x03 \x01(\x01R\x14\x61ttributedRevenueUsd\x12$\n\x0etotal_cost_usd\x18\x04 \x01(\x01R\x0ctotalCostUsd\x12!\n\x0croi_multiple\x18\x05 \x01(\x01R\x0broiMultiple\x12\x1f\n\x0btrace_count\x18\x06 \x01(\x05R\ntraceCount\x12\x1f\n\x0busage_count\x18\x07 \x01(\x05R\nusageCount\x12\x1b\n\ttrace_ids\x18\x08 \x03(\tR\x08traceIds\x12(\n\x10usage_record_ids\x18\t \x03(\tR\x0eusageRecordIds\"\xc2\x01\n\x0bTeamSummary\x12\x17\n\x07team_id\x18\x01 \x01(\tR\x06teamId\x12\x34\n\x16\x61ttributed_revenue_usd\x18\x02 \x01(\x01R\x14\x61ttributedRevenueUsd\x12$\n\x0etotal_cost_usd\x18\x03 \x01(\x01R\x0ctotalCostUsd\x12!\n\x0croi_multiple\x18\x04 \x01(\x01R\x0broiMultiple\x12\x1b\n\tagent_ids\x18\x05 \x03(\tR\x08\x61gentIds\"\xd3\x04\n\x0f\x44\x65\x61lAttribution\x12/\n\x04\x64\x65\x61l\x18\x01 \x01(\x0b\x32\x1b.attribution.v1.DealContextR\x04\x64\x65\x61l\x12L\n\x11trace_touchpoints\x18\x02 \x03(\x0b\x32\x1f.attribution.v1.TraceTouchpointR\x10traceTouchpoints\x12L\n\x11usage_touchpoints\x18\x03 \x03(\x0b\x32\x1f.attribution.v1.UsageTouchpointR\x10usageTouchpoints\x12\x45\n\x0f\x61gent_summaries\x18\x04 \x03(\x0b\x32\x1c.attribution.v1.AgentSummaryR\x0e\x61gentSummaries\x12\x42\n\x0eteam_summaries\x18\x05 \x03(\x0b\x32\x1b.attribution.v1.TeamSummaryR\rteamSummaries\x12?\n\x1ctotal_attributed_revenue_usd\x18\x06 \x01(\x01R\x19totalAttributedRevenueUsd\x12\x39\n\x19total_attributed_cost_usd\x18\x07 \x01(\x01R\x16totalAttributedCostUsd\x12\x38\n\x18unattributed_revenue_usd\x18\x08 \x01(\x01R\x16unattributedRevenueUsd\x12\x32\n\x15unattributed_cost_usd\x18\t \x01(\x01R\x13unattributedCostUsd\"\xdc\x02\n\x11\x41ttributionReport\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x36\n\x05query\x18\x02 \x01(\x0b\x32 .attribution.v1.AttributionQueryR\x05query\x12=\n\x0cgenerated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bgeneratedAt\x12\x35\n\x05\x64\x65\x61ls\x18\x04 \x03(\x0b\x32\x1f.attribution.v1.DealAttributionR\x05\x64\x65\x61ls\x12\x45\n\x0f\x61gent_summaries\x18\x05 \x03(\x0b\x32\x1c.attribution.v1.AgentSummaryR\x0e\x61gentSummaries\x12\x42\n\x0eteam_summaries\x18\x06 \x03(\x0b\x32\x1b.attribution.v1.TeamSummaryR\rteamSummaries\"\x80\x02\n\x18\x41ttributionReportSummary\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x36\n\x05query\x18\x02 \x01(\x0b\x32 .attribution.v1.AttributionQueryR\x05query\x12=\n\x0cgenerated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bgeneratedAt\x12\x1d\n\ndeal_count\x18\x04 \x01(\x05R\tdealCount\x12\x1f\n\x0b\x61gent_count\x18\x05 \x01(\x05R\nagentCount\x12\x1d\n\nteam_count\x18\x06 \x01(\x05R\tteamCount\"O\n\x15GenerateReportRequest\x12\x36\n\x05query\x18\x01 \x01(\x0b\x32 .attribution.v1.AttributionQueryR\x05query\"S\n\x16GenerateReportResponse\x12\x39\n\x06report\x18\x01 \x01(\x0b\x32!.attribution.v1.AttributionReportR\x06report\"/\n\x10GetReportRequest\x12\x1b\n\treport_id\x18\x01 \x01(\tR\x08reportId\"N\n\x11GetReportResponse\x12\x39\n\x06report\x18\x01 \x01(\x0b\x32!.attribution.v1.AttributionReportR\x06report\"\xc6\x01\n\x12ListReportsRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\x12\x36\n\x05model\x18\x03 \x01(\x0e\x32 .attribution.v1.AttributionModelR\x05model\x12\x14\n\x05limit\x18\x04 \x01(\x05R\x05limit\x12\x16\n\x06offset\x18\x05 \x01(\x05R\x06offset\"t\n\x13ListReportsResponse\x12\x42\n\x07reports\x18\x01 \x03(\x0b\x32(.attribution.v1.AttributionReportSummaryR\x07reports\x12\x19\n\x08has_more\x18\x02 \x01(\x08R\x07hasMore\"\x89\x01\n\x13\x45xportReportRequest\x12\x36\n\x05query\x18\x01 \x01(\x0b\x32 .attribution.v1.AttributionQueryR\x05query\x12:\n\x06\x66ormat\x18\x02 \x01(\x0e\x32\".attribution.v1.ReportExportFormatR\x06\x66ormat\"o\n\x14\x45xportReportResponse\x12\x18\n\x07\x63ontent\x18\x01 \x01(\x0cR\x07\x63ontent\x12!\n\x0c\x63ontent_type\x18\x02 \x01(\tR\x0b\x63ontentType\x12\x1a\n\x08\x66ilename\x18\x03 \x01(\tR\x08\x66ilename*\x95\x01\n\x10\x41ttributionModel\x12!\n\x1d\x41TTRIBUTION_MODEL_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x41TTRIBUTION_MODEL_DIRECT\x10\x01\x12\x1e\n\x1a\x41TTRIBUTION_MODEL_ASSISTED\x10\x02\x12 \n\x1c\x41TTRIBUTION_MODEL_INFLUENCED\x10\x03*w\n\x12ReportExportFormat\x12$\n REPORT_EXPORT_FORMAT_UNSPECIFIED\x10\x00\x12\x1d\n\x19REPORT_EXPORT_FORMAT_JSON\x10\x01\x12\x1c\n\x18REPORT_EXPORT_FORMAT_CSV\x10\x02\x32\xfa\x02\n\x12\x41ttributionService\x12_\n\x0eGenerateReport\x12%.attribution.v1.GenerateReportRequest\x1a&.attribution.v1.GenerateReportResponse\x12P\n\tGetReport\x12 .attribution.v1.GetReportRequest\x1a!.attribution.v1.GetReportResponse\x12V\n\x0bListReports\x12\".attribution.v1.ListReportsRequest\x1a#.attribution.v1.ListReportsResponse\x12Y\n\x0c\x45xportReport\x12#.attribution.v1.ExportReportRequest\x1a$.attribution.v1.ExportReportResponseB>Z\n\tobjective\x18\x01 \x01(\x0b\x32 .attribution.v1.ObjectiveContextR\tobjective\x12L\n\x11trace_touchpoints\x18\x02 \x03(\x0b\x32\x1f.attribution.v1.TraceTouchpointR\x10traceTouchpoints\x12L\n\x11usage_touchpoints\x18\x03 \x03(\x0b\x32\x1f.attribution.v1.UsageTouchpointR\x10usageTouchpoints\x12N\n\x0f\x61gent_summaries\x18\x04 \x03(\x0b\x32%.attribution.v1.ObjectiveAgentSummaryR\x0e\x61gentSummaries\x12K\n\x0eteam_summaries\x18\x05 \x03(\x0b\x32$.attribution.v1.ObjectiveTeamSummaryR\rteamSummaries\x12\x43\n\x1etotal_attributed_outcome_count\x18\x06 \x01(\x01R\x1btotalAttributedOutcomeCount\x12\x39\n\x19total_attributed_cost_usd\x18\x07 \x01(\x01R\x16totalAttributedCostUsd\x12<\n\x1aunattributed_outcome_count\x18\x08 \x01(\x01R\x18unattributedOutcomeCount\x12\x32\n\x15unattributed_cost_usd\x18\t \x01(\x01R\x13unattributedCostUsd\"\xfb\x04\n\x11\x41ttributionReport\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x36\n\x05query\x18\x02 \x01(\x0b\x32 .attribution.v1.AttributionQueryR\x05query\x12=\n\x0cgenerated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bgeneratedAt\x12\x35\n\x05\x64\x65\x61ls\x18\x04 \x03(\x0b\x32\x1f.attribution.v1.DealAttributionR\x05\x64\x65\x61ls\x12\x45\n\x0f\x61gent_summaries\x18\x05 \x03(\x0b\x32\x1c.attribution.v1.AgentSummaryR\x0e\x61gentSummaries\x12\x42\n\x0eteam_summaries\x18\x06 \x03(\x0b\x32\x1b.attribution.v1.TeamSummaryR\rteamSummaries\x12Z\n\x12objective_outcomes\x18\x07 \x03(\x0b\x32+.attribution.v1.ObjectiveOutcomeAttributionR\x11objectiveOutcomes\x12\x61\n\x19objective_agent_summaries\x18\x08 \x03(\x0b\x32%.attribution.v1.ObjectiveAgentSummaryR\x17objectiveAgentSummaries\x12^\n\x18objective_team_summaries\x18\t \x03(\x0b\x32$.attribution.v1.ObjectiveTeamSummaryR\x16objectiveTeamSummaries\"\xb8\x02\n\x18\x41ttributionReportSummary\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x36\n\x05query\x18\x02 \x01(\x0b\x32 .attribution.v1.AttributionQueryR\x05query\x12=\n\x0cgenerated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bgeneratedAt\x12\x1d\n\ndeal_count\x18\x04 \x01(\x05R\tdealCount\x12\x1f\n\x0b\x61gent_count\x18\x05 \x01(\x05R\nagentCount\x12\x1d\n\nteam_count\x18\x06 \x01(\x05R\tteamCount\x12\x36\n\x17objective_outcome_count\x18\x07 \x01(\x05R\x15objectiveOutcomeCount\"\xd1\x05\n\x13\x41ttributionSnapshot\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\x12\'\n\x0forganization_id\x18\x03 \x01(\tR\x0eorganizationId\x12I\n\x0csubject_kind\x18\x04 \x01(\x0e\x32&.attribution.v1.AttributionSubjectKindR\x0bsubjectKind\x12\x1d\n\nsubject_id\x18\x05 \x01(\tR\tsubjectId\x12\x36\n\x05model\x18\x06 \x01(\x0e\x32 .attribution.v1.AttributionModelR\x05model\x12\x46\n\x0bsignal_type\x18\x07 \x01(\x0e\x32%.attribution.v1.AttributionSignalTypeR\nsignalType\x12\x1b\n\tsignal_id\x18\x08 \x01(\tR\x08signalId\x12=\n\x0cwindow_start\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bwindowStart\x12\x39\n\nwindow_end\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\twindowEnd\x12;\n\x0brecorded_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nrecordedAt\x12\x35\n\x04\x64\x65\x61l\x18\x0c \x01(\x0b\x32\x1f.attribution.v1.DealAttributionH\x00R\x04\x64\x65\x61l\x12Z\n\x11objective_outcome\x18\r \x01(\x0b\x32+.attribution.v1.ObjectiveOutcomeAttributionH\x00R\x10objectiveOutcomeB\r\n\x0b\x61ttribution\"\xc9\x01\n\x19ObjectiveCompletionSignal\x12!\n\x0cworkspace_id\x18\x01 \x01(\tR\x0bworkspaceId\x12\'\n\x0forganization_id\x18\x02 \x01(\tR\x0eorganizationId\x12!\n\x0cobjective_id\x18\x03 \x01(\tR\x0bobjectiveId\x12=\n\x0c\x63ompleted_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0b\x63ompletedAt\"\xbd\x01\n\x15TraceCompletionSignal\x12!\n\x0cworkspace_id\x18\x01 \x01(\tR\x0bworkspaceId\x12\'\n\x0forganization_id\x18\x02 \x01(\tR\x0eorganizationId\x12\x19\n\x08trace_id\x18\x03 \x01(\tR\x07traceId\x12=\n\x0c\x63ompleted_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0b\x63ompletedAt\"\xd1\x01\n\x11\x41ttributionSignal\x12^\n\x14objective_completion\x18\x01 \x01(\x0b\x32).attribution.v1.ObjectiveCompletionSignalH\x00R\x13objectiveCompletion\x12R\n\x10trace_completion\x18\x02 \x01(\x0b\x32%.attribution.v1.TraceCompletionSignalH\x00R\x0ftraceCompletionB\x08\n\x06signal\"O\n\x15GenerateReportRequest\x12\x36\n\x05query\x18\x01 \x01(\x0b\x32 .attribution.v1.AttributionQueryR\x05query\"S\n\x16GenerateReportResponse\x12\x39\n\x06report\x18\x01 \x01(\x0b\x32!.attribution.v1.AttributionReportR\x06report\"/\n\x10GetReportRequest\x12\x1b\n\treport_id\x18\x01 \x01(\tR\x08reportId\"N\n\x11GetReportResponse\x12\x39\n\x06report\x18\x01 \x01(\x0b\x32!.attribution.v1.AttributionReportR\x06report\"\xc6\x01\n\x12ListReportsRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\x12\x36\n\x05model\x18\x03 \x01(\x0e\x32 .attribution.v1.AttributionModelR\x05model\x12\x14\n\x05limit\x18\x04 \x01(\x05R\x05limit\x12\x16\n\x06offset\x18\x05 \x01(\x05R\x06offset\"t\n\x13ListReportsResponse\x12\x42\n\x07reports\x18\x01 \x03(\x0b\x32(.attribution.v1.AttributionReportSummaryR\x07reports\x12\x19\n\x08has_more\x18\x02 \x01(\x08R\x07hasMore\"\x89\x01\n\x13\x45xportReportRequest\x12\x36\n\x05query\x18\x01 \x01(\x0b\x32 .attribution.v1.AttributionQueryR\x05query\x12:\n\x06\x66ormat\x18\x02 \x01(\x0e\x32\".attribution.v1.ReportExportFormatR\x06\x66ormat\"o\n\x14\x45xportReportResponse\x12\x18\n\x07\x63ontent\x18\x01 \x01(\x0cR\x07\x63ontent\x12!\n\x0c\x63ontent_type\x18\x02 \x01(\tR\x0b\x63ontentType\x12\x1a\n\x08\x66ilename\x18\x03 \x01(\tR\x08\x66ilename\"\xbf\x01\n\x14RecordSignalsRequest\x12;\n\x07signals\x18\x01 \x03(\x0b\x32!.attribution.v1.AttributionSignalR\x07signals\x12\x38\n\x06models\x18\x02 \x03(\x0e\x32 .attribution.v1.AttributionModelR\x06models\x12\x30\n\x14include_team_rollups\x18\x03 \x01(\x08R\x12includeTeamRollups\"Z\n\x15RecordSignalsResponse\x12\x41\n\tsnapshots\x18\x01 \x03(\x0b\x32#.attribution.v1.AttributionSnapshotR\tsnapshots\"5\n\x12GetSnapshotRequest\x12\x1f\n\x0bsnapshot_id\x18\x01 \x01(\tR\nsnapshotId\"V\n\x13GetSnapshotResponse\x12?\n\x08snapshot\x18\x01 \x01(\x0b\x32#.attribution.v1.AttributionSnapshotR\x08snapshot\"\xb2\x02\n\x14ListSnapshotsRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\x12I\n\x0csubject_kind\x18\x03 \x01(\x0e\x32&.attribution.v1.AttributionSubjectKindR\x0bsubjectKind\x12\x1d\n\nsubject_id\x18\x04 \x01(\tR\tsubjectId\x12\x36\n\x05model\x18\x05 \x01(\x0e\x32 .attribution.v1.AttributionModelR\x05model\x12\x14\n\x05limit\x18\x06 \x01(\x05R\x05limit\x12\x16\n\x06offset\x18\x07 \x01(\x05R\x06offset\"u\n\x15ListSnapshotsResponse\x12\x41\n\tsnapshots\x18\x01 \x03(\x0b\x32#.attribution.v1.AttributionSnapshotR\tsnapshots\x12\x19\n\x08has_more\x18\x02 \x01(\x08R\x07hasMore*\x95\x01\n\x10\x41ttributionModel\x12!\n\x1d\x41TTRIBUTION_MODEL_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x41TTRIBUTION_MODEL_DIRECT\x10\x01\x12\x1e\n\x1a\x41TTRIBUTION_MODEL_ASSISTED\x10\x02\x12 \n\x1c\x41TTRIBUTION_MODEL_INFLUENCED\x10\x03*w\n\x12ReportExportFormat\x12$\n REPORT_EXPORT_FORMAT_UNSPECIFIED\x10\x00\x12\x1d\n\x19REPORT_EXPORT_FORMAT_JSON\x10\x01\x12\x1c\n\x18REPORT_EXPORT_FORMAT_CSV\x10\x02*\x8d\x01\n\x16\x41ttributionSubjectKind\x12(\n$ATTRIBUTION_SUBJECT_KIND_UNSPECIFIED\x10\x00\x12!\n\x1d\x41TTRIBUTION_SUBJECT_KIND_DEAL\x10\x01\x12&\n\"ATTRIBUTION_SUBJECT_KIND_OBJECTIVE\x10\x02*\x9e\x01\n\x15\x41ttributionSignalType\x12\'\n#ATTRIBUTION_SIGNAL_TYPE_UNSPECIFIED\x10\x00\x12/\n+ATTRIBUTION_SIGNAL_TYPE_OBJECTIVE_COMPLETED\x10\x01\x12+\n\'ATTRIBUTION_SIGNAL_TYPE_TRACE_COMPLETED\x10\x02\x32\x8e\x05\n\x12\x41ttributionService\x12_\n\x0eGenerateReport\x12%.attribution.v1.GenerateReportRequest\x1a&.attribution.v1.GenerateReportResponse\x12P\n\tGetReport\x12 .attribution.v1.GetReportRequest\x1a!.attribution.v1.GetReportResponse\x12V\n\x0bListReports\x12\".attribution.v1.ListReportsRequest\x1a#.attribution.v1.ListReportsResponse\x12Y\n\x0c\x45xportReport\x12#.attribution.v1.ExportReportRequest\x1a$.attribution.v1.ExportReportResponse\x12\\\n\rRecordSignals\x12$.attribution.v1.RecordSignalsRequest\x1a%.attribution.v1.RecordSignalsResponse\x12V\n\x0bGetSnapshot\x12\".attribution.v1.GetSnapshotRequest\x1a#.attribution.v1.GetSnapshotResponse\x12\\\n\rListSnapshots\x12$.attribution.v1.ListSnapshotsRequest\x1a%.attribution.v1.ListSnapshotsResponseB>Z & { * @generated from field: bool include_team_rollups = 7; */ includeTeamRollups: boolean; + + /** + * @generated from field: repeated string objective_ids = 8; + */ + objectiveIds: string[]; }; /** @@ -125,6 +130,63 @@ export type DealContext = Message<"attribution.v1.DealContext"> & { export const DealContextSchema: GenMessage = /*@__PURE__*/ messageDesc(file_attribution_v1_attribution, 1); +/** + * @generated from message attribution.v1.ObjectiveContext + */ +export type ObjectiveContext = Message<"attribution.v1.ObjectiveContext"> & { + /** + * @generated from field: string objective_id = 1; + */ + objectiveId: string; + + /** + * @generated from field: string agent_id = 2; + */ + agentId: string; + + /** + * @generated from field: string surface = 3; + */ + surface: string; + + /** + * @generated from field: string title = 4; + */ + title: string; + + /** + * @generated from field: string description = 5; + */ + description: string; + + /** + * @generated from field: string state = 6; + */ + state: string; + + /** + * @generated from field: google.protobuf.Timestamp created_at = 7; + */ + createdAt?: Timestamp; + + /** + * @generated from field: google.protobuf.Timestamp updated_at = 8; + */ + updatedAt?: Timestamp; + + /** + * @generated from field: google.protobuf.Timestamp completed_at = 9; + */ + completedAt?: Timestamp; +}; + +/** + * Describes the message attribution.v1.ObjectiveContext. + * Use `create(ObjectiveContextSchema)` to create a new message. + */ +export const ObjectiveContextSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 2); + /** * @generated from message attribution.v1.TraceTouchpoint */ @@ -145,7 +207,7 @@ export type TraceTouchpoint = Message<"attribution.v1.TraceTouchpoint"> & { * Use `create(TraceTouchpointSchema)` to create a new message. */ export const TraceTouchpointSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 2); + messageDesc(file_attribution_v1_attribution, 3); /** * @generated from message attribution.v1.UsageTouchpoint @@ -212,7 +274,7 @@ export type UsageTouchpoint = Message<"attribution.v1.UsageTouchpoint"> & { * Use `create(UsageTouchpointSchema)` to create a new message. */ export const UsageTouchpointSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 3); + messageDesc(file_attribution_v1_attribution, 4); /** * @generated from message attribution.v1.AgentSummary @@ -269,7 +331,7 @@ export type AgentSummary = Message<"attribution.v1.AgentSummary"> & { * Use `create(AgentSummarySchema)` to create a new message. */ export const AgentSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 4); + messageDesc(file_attribution_v1_attribution, 5); /** * @generated from message attribution.v1.TeamSummary @@ -306,7 +368,96 @@ export type TeamSummary = Message<"attribution.v1.TeamSummary"> & { * Use `create(TeamSummarySchema)` to create a new message. */ export const TeamSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 5); + messageDesc(file_attribution_v1_attribution, 6); + +/** + * @generated from message attribution.v1.ObjectiveAgentSummary + */ +export type ObjectiveAgentSummary = Message<"attribution.v1.ObjectiveAgentSummary"> & { + /** + * @generated from field: string agent_id = 1; + */ + agentId: string; + + /** + * @generated from field: double attribution_weight = 2; + */ + attributionWeight: number; + + /** + * @generated from field: double attributed_outcome_count = 3; + */ + attributedOutcomeCount: number; + + /** + * @generated from field: double total_cost_usd = 4; + */ + totalCostUsd: number; + + /** + * @generated from field: int32 trace_count = 5; + */ + traceCount: number; + + /** + * @generated from field: int32 usage_count = 6; + */ + usageCount: number; + + /** + * @generated from field: repeated string trace_ids = 7; + */ + traceIds: string[]; + + /** + * @generated from field: repeated string usage_record_ids = 8; + */ + usageRecordIds: string[]; +}; + +/** + * Describes the message attribution.v1.ObjectiveAgentSummary. + * Use `create(ObjectiveAgentSummarySchema)` to create a new message. + */ +export const ObjectiveAgentSummarySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 7); + +/** + * @generated from message attribution.v1.ObjectiveTeamSummary + */ +export type ObjectiveTeamSummary = Message<"attribution.v1.ObjectiveTeamSummary"> & { + /** + * @generated from field: string team_id = 1; + */ + teamId: string; + + /** + * @generated from field: double attribution_weight = 2; + */ + attributionWeight: number; + + /** + * @generated from field: double attributed_outcome_count = 3; + */ + attributedOutcomeCount: number; + + /** + * @generated from field: double total_cost_usd = 4; + */ + totalCostUsd: number; + + /** + * @generated from field: repeated string agent_ids = 5; + */ + agentIds: string[]; +}; + +/** + * Describes the message attribution.v1.ObjectiveTeamSummary. + * Use `create(ObjectiveTeamSummarySchema)` to create a new message. + */ +export const ObjectiveTeamSummarySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 8); /** * @generated from message attribution.v1.DealAttribution @@ -363,7 +514,64 @@ export type DealAttribution = Message<"attribution.v1.DealAttribution"> & { * Use `create(DealAttributionSchema)` to create a new message. */ export const DealAttributionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 6); + messageDesc(file_attribution_v1_attribution, 9); + +/** + * @generated from message attribution.v1.ObjectiveOutcomeAttribution + */ +export type ObjectiveOutcomeAttribution = Message<"attribution.v1.ObjectiveOutcomeAttribution"> & { + /** + * @generated from field: attribution.v1.ObjectiveContext objective = 1; + */ + objective?: ObjectiveContext; + + /** + * @generated from field: repeated attribution.v1.TraceTouchpoint trace_touchpoints = 2; + */ + traceTouchpoints: TraceTouchpoint[]; + + /** + * @generated from field: repeated attribution.v1.UsageTouchpoint usage_touchpoints = 3; + */ + usageTouchpoints: UsageTouchpoint[]; + + /** + * @generated from field: repeated attribution.v1.ObjectiveAgentSummary agent_summaries = 4; + */ + agentSummaries: ObjectiveAgentSummary[]; + + /** + * @generated from field: repeated attribution.v1.ObjectiveTeamSummary team_summaries = 5; + */ + teamSummaries: ObjectiveTeamSummary[]; + + /** + * @generated from field: double total_attributed_outcome_count = 6; + */ + totalAttributedOutcomeCount: number; + + /** + * @generated from field: double total_attributed_cost_usd = 7; + */ + totalAttributedCostUsd: number; + + /** + * @generated from field: double unattributed_outcome_count = 8; + */ + unattributedOutcomeCount: number; + + /** + * @generated from field: double unattributed_cost_usd = 9; + */ + unattributedCostUsd: number; +}; + +/** + * Describes the message attribution.v1.ObjectiveOutcomeAttribution. + * Use `create(ObjectiveOutcomeAttributionSchema)` to create a new message. + */ +export const ObjectiveOutcomeAttributionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 10); /** * @generated from message attribution.v1.AttributionReport @@ -398,6 +606,21 @@ export type AttributionReport = Message<"attribution.v1.AttributionReport"> & { * @generated from field: repeated attribution.v1.TeamSummary team_summaries = 6; */ teamSummaries: TeamSummary[]; + + /** + * @generated from field: repeated attribution.v1.ObjectiveOutcomeAttribution objective_outcomes = 7; + */ + objectiveOutcomes: ObjectiveOutcomeAttribution[]; + + /** + * @generated from field: repeated attribution.v1.ObjectiveAgentSummary objective_agent_summaries = 8; + */ + objectiveAgentSummaries: ObjectiveAgentSummary[]; + + /** + * @generated from field: repeated attribution.v1.ObjectiveTeamSummary objective_team_summaries = 9; + */ + objectiveTeamSummaries: ObjectiveTeamSummary[]; }; /** @@ -405,7 +628,7 @@ export type AttributionReport = Message<"attribution.v1.AttributionReport"> & { * Use `create(AttributionReportSchema)` to create a new message. */ export const AttributionReportSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 7); + messageDesc(file_attribution_v1_attribution, 11); /** * @generated from message attribution.v1.AttributionReportSummary @@ -440,6 +663,11 @@ export type AttributionReportSummary = Message<"attribution.v1.AttributionReport * @generated from field: int32 team_count = 6; */ teamCount: number; + + /** + * @generated from field: int32 objective_outcome_count = 7; + */ + objectiveOutcomeCount: number; }; /** @@ -447,7 +675,184 @@ export type AttributionReportSummary = Message<"attribution.v1.AttributionReport * Use `create(AttributionReportSummarySchema)` to create a new message. */ export const AttributionReportSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 8); + messageDesc(file_attribution_v1_attribution, 12); + +/** + * @generated from message attribution.v1.AttributionSnapshot + */ +export type AttributionSnapshot = Message<"attribution.v1.AttributionSnapshot"> & { + /** + * @generated from field: string id = 1; + */ + id: string; + + /** + * @generated from field: string workspace_id = 2; + */ + workspaceId: string; + + /** + * @generated from field: string organization_id = 3; + */ + organizationId: string; + + /** + * @generated from field: attribution.v1.AttributionSubjectKind subject_kind = 4; + */ + subjectKind: AttributionSubjectKind; + + /** + * @generated from field: string subject_id = 5; + */ + subjectId: string; + + /** + * @generated from field: attribution.v1.AttributionModel model = 6; + */ + model: AttributionModel; + + /** + * @generated from field: attribution.v1.AttributionSignalType signal_type = 7; + */ + signalType: AttributionSignalType; + + /** + * @generated from field: string signal_id = 8; + */ + signalId: string; + + /** + * @generated from field: google.protobuf.Timestamp window_start = 9; + */ + windowStart?: Timestamp; + + /** + * @generated from field: google.protobuf.Timestamp window_end = 10; + */ + windowEnd?: Timestamp; + + /** + * @generated from field: google.protobuf.Timestamp recorded_at = 11; + */ + recordedAt?: Timestamp; + + /** + * @generated from oneof attribution.v1.AttributionSnapshot.attribution + */ + attribution: { + /** + * @generated from field: attribution.v1.DealAttribution deal = 12; + */ + value: DealAttribution; + case: "deal"; + } | { + /** + * @generated from field: attribution.v1.ObjectiveOutcomeAttribution objective_outcome = 13; + */ + value: ObjectiveOutcomeAttribution; + case: "objectiveOutcome"; + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message attribution.v1.AttributionSnapshot. + * Use `create(AttributionSnapshotSchema)` to create a new message. + */ +export const AttributionSnapshotSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 13); + +/** + * @generated from message attribution.v1.ObjectiveCompletionSignal + */ +export type ObjectiveCompletionSignal = Message<"attribution.v1.ObjectiveCompletionSignal"> & { + /** + * @generated from field: string workspace_id = 1; + */ + workspaceId: string; + + /** + * @generated from field: string organization_id = 2; + */ + organizationId: string; + + /** + * @generated from field: string objective_id = 3; + */ + objectiveId: string; + + /** + * @generated from field: google.protobuf.Timestamp completed_at = 4; + */ + completedAt?: Timestamp; +}; + +/** + * Describes the message attribution.v1.ObjectiveCompletionSignal. + * Use `create(ObjectiveCompletionSignalSchema)` to create a new message. + */ +export const ObjectiveCompletionSignalSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 14); + +/** + * @generated from message attribution.v1.TraceCompletionSignal + */ +export type TraceCompletionSignal = Message<"attribution.v1.TraceCompletionSignal"> & { + /** + * @generated from field: string workspace_id = 1; + */ + workspaceId: string; + + /** + * @generated from field: string organization_id = 2; + */ + organizationId: string; + + /** + * @generated from field: string trace_id = 3; + */ + traceId: string; + + /** + * @generated from field: google.protobuf.Timestamp completed_at = 4; + */ + completedAt?: Timestamp; +}; + +/** + * Describes the message attribution.v1.TraceCompletionSignal. + * Use `create(TraceCompletionSignalSchema)` to create a new message. + */ +export const TraceCompletionSignalSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 15); + +/** + * @generated from message attribution.v1.AttributionSignal + */ +export type AttributionSignal = Message<"attribution.v1.AttributionSignal"> & { + /** + * @generated from oneof attribution.v1.AttributionSignal.signal + */ + signal: { + /** + * @generated from field: attribution.v1.ObjectiveCompletionSignal objective_completion = 1; + */ + value: ObjectiveCompletionSignal; + case: "objectiveCompletion"; + } | { + /** + * @generated from field: attribution.v1.TraceCompletionSignal trace_completion = 2; + */ + value: TraceCompletionSignal; + case: "traceCompletion"; + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message attribution.v1.AttributionSignal. + * Use `create(AttributionSignalSchema)` to create a new message. + */ +export const AttributionSignalSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 16); /** * @generated from message attribution.v1.GenerateReportRequest @@ -464,7 +869,7 @@ export type GenerateReportRequest = Message<"attribution.v1.GenerateReportReques * Use `create(GenerateReportRequestSchema)` to create a new message. */ export const GenerateReportRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 9); + messageDesc(file_attribution_v1_attribution, 17); /** * @generated from message attribution.v1.GenerateReportResponse @@ -481,7 +886,7 @@ export type GenerateReportResponse = Message<"attribution.v1.GenerateReportRespo * Use `create(GenerateReportResponseSchema)` to create a new message. */ export const GenerateReportResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 10); + messageDesc(file_attribution_v1_attribution, 18); /** * @generated from message attribution.v1.GetReportRequest @@ -498,7 +903,7 @@ export type GetReportRequest = Message<"attribution.v1.GetReportRequest"> & { * Use `create(GetReportRequestSchema)` to create a new message. */ export const GetReportRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 11); + messageDesc(file_attribution_v1_attribution, 19); /** * @generated from message attribution.v1.GetReportResponse @@ -515,7 +920,7 @@ export type GetReportResponse = Message<"attribution.v1.GetReportResponse"> & { * Use `create(GetReportResponseSchema)` to create a new message. */ export const GetReportResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 12); + messageDesc(file_attribution_v1_attribution, 20); /** * @generated from message attribution.v1.ListReportsRequest @@ -552,7 +957,7 @@ export type ListReportsRequest = Message<"attribution.v1.ListReportsRequest"> & * Use `create(ListReportsRequestSchema)` to create a new message. */ export const ListReportsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 13); + messageDesc(file_attribution_v1_attribution, 21); /** * @generated from message attribution.v1.ListReportsResponse @@ -574,7 +979,7 @@ export type ListReportsResponse = Message<"attribution.v1.ListReportsResponse"> * Use `create(ListReportsResponseSchema)` to create a new message. */ export const ListReportsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 14); + messageDesc(file_attribution_v1_attribution, 22); /** * @generated from message attribution.v1.ExportReportRequest @@ -596,7 +1001,7 @@ export type ExportReportRequest = Message<"attribution.v1.ExportReportRequest"> * Use `create(ExportReportRequestSchema)` to create a new message. */ export const ExportReportRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 15); + messageDesc(file_attribution_v1_attribution, 23); /** * @generated from message attribution.v1.ExportReportResponse @@ -623,7 +1028,154 @@ export type ExportReportResponse = Message<"attribution.v1.ExportReportResponse" * Use `create(ExportReportResponseSchema)` to create a new message. */ export const ExportReportResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_attribution_v1_attribution, 16); + messageDesc(file_attribution_v1_attribution, 24); + +/** + * @generated from message attribution.v1.RecordSignalsRequest + */ +export type RecordSignalsRequest = Message<"attribution.v1.RecordSignalsRequest"> & { + /** + * @generated from field: repeated attribution.v1.AttributionSignal signals = 1; + */ + signals: AttributionSignal[]; + + /** + * @generated from field: repeated attribution.v1.AttributionModel models = 2; + */ + models: AttributionModel[]; + + /** + * @generated from field: bool include_team_rollups = 3; + */ + includeTeamRollups: boolean; +}; + +/** + * Describes the message attribution.v1.RecordSignalsRequest. + * Use `create(RecordSignalsRequestSchema)` to create a new message. + */ +export const RecordSignalsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 25); + +/** + * @generated from message attribution.v1.RecordSignalsResponse + */ +export type RecordSignalsResponse = Message<"attribution.v1.RecordSignalsResponse"> & { + /** + * @generated from field: repeated attribution.v1.AttributionSnapshot snapshots = 1; + */ + snapshots: AttributionSnapshot[]; +}; + +/** + * Describes the message attribution.v1.RecordSignalsResponse. + * Use `create(RecordSignalsResponseSchema)` to create a new message. + */ +export const RecordSignalsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 26); + +/** + * @generated from message attribution.v1.GetSnapshotRequest + */ +export type GetSnapshotRequest = Message<"attribution.v1.GetSnapshotRequest"> & { + /** + * @generated from field: string snapshot_id = 1; + */ + snapshotId: string; +}; + +/** + * Describes the message attribution.v1.GetSnapshotRequest. + * Use `create(GetSnapshotRequestSchema)` to create a new message. + */ +export const GetSnapshotRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 27); + +/** + * @generated from message attribution.v1.GetSnapshotResponse + */ +export type GetSnapshotResponse = Message<"attribution.v1.GetSnapshotResponse"> & { + /** + * @generated from field: attribution.v1.AttributionSnapshot snapshot = 1; + */ + snapshot?: AttributionSnapshot; +}; + +/** + * Describes the message attribution.v1.GetSnapshotResponse. + * Use `create(GetSnapshotResponseSchema)` to create a new message. + */ +export const GetSnapshotResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 28); + +/** + * @generated from message attribution.v1.ListSnapshotsRequest + */ +export type ListSnapshotsRequest = Message<"attribution.v1.ListSnapshotsRequest"> & { + /** + * @generated from field: string organization_id = 1; + */ + organizationId: string; + + /** + * @generated from field: string workspace_id = 2; + */ + workspaceId: string; + + /** + * @generated from field: attribution.v1.AttributionSubjectKind subject_kind = 3; + */ + subjectKind: AttributionSubjectKind; + + /** + * @generated from field: string subject_id = 4; + */ + subjectId: string; + + /** + * @generated from field: attribution.v1.AttributionModel model = 5; + */ + model: AttributionModel; + + /** + * @generated from field: int32 limit = 6; + */ + limit: number; + + /** + * @generated from field: int32 offset = 7; + */ + offset: number; +}; + +/** + * Describes the message attribution.v1.ListSnapshotsRequest. + * Use `create(ListSnapshotsRequestSchema)` to create a new message. + */ +export const ListSnapshotsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 29); + +/** + * @generated from message attribution.v1.ListSnapshotsResponse + */ +export type ListSnapshotsResponse = Message<"attribution.v1.ListSnapshotsResponse"> & { + /** + * @generated from field: repeated attribution.v1.AttributionSnapshot snapshots = 1; + */ + snapshots: AttributionSnapshot[]; + + /** + * @generated from field: bool has_more = 2; + */ + hasMore: boolean; +}; + +/** + * Describes the message attribution.v1.ListSnapshotsResponse. + * Use `create(ListSnapshotsResponseSchema)` to create a new message. + */ +export const ListSnapshotsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 30); /** * @generated from enum attribution.v1.AttributionModel @@ -682,6 +1234,58 @@ export enum ReportExportFormat { export const ReportExportFormatSchema: GenEnum = /*@__PURE__*/ enumDesc(file_attribution_v1_attribution, 1); +/** + * @generated from enum attribution.v1.AttributionSubjectKind + */ +export enum AttributionSubjectKind { + /** + * @generated from enum value: ATTRIBUTION_SUBJECT_KIND_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: ATTRIBUTION_SUBJECT_KIND_DEAL = 1; + */ + DEAL = 1, + + /** + * @generated from enum value: ATTRIBUTION_SUBJECT_KIND_OBJECTIVE = 2; + */ + OBJECTIVE = 2, +} + +/** + * Describes the enum attribution.v1.AttributionSubjectKind. + */ +export const AttributionSubjectKindSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_attribution_v1_attribution, 2); + +/** + * @generated from enum attribution.v1.AttributionSignalType + */ +export enum AttributionSignalType { + /** + * @generated from enum value: ATTRIBUTION_SIGNAL_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: ATTRIBUTION_SIGNAL_TYPE_OBJECTIVE_COMPLETED = 1; + */ + OBJECTIVE_COMPLETED = 1, + + /** + * @generated from enum value: ATTRIBUTION_SIGNAL_TYPE_TRACE_COMPLETED = 2; + */ + TRACE_COMPLETED = 2, +} + +/** + * Describes the enum attribution.v1.AttributionSignalType. + */ +export const AttributionSignalTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_attribution_v1_attribution, 3); + /** * AttributionService computes revenue attribution and ROI across traces and usage. * @@ -720,6 +1324,30 @@ export const AttributionService: GenService<{ input: typeof ExportReportRequestSchema; output: typeof ExportReportResponseSchema; }, + /** + * @generated from rpc attribution.v1.AttributionService.RecordSignals + */ + recordSignals: { + methodKind: "unary"; + input: typeof RecordSignalsRequestSchema; + output: typeof RecordSignalsResponseSchema; + }, + /** + * @generated from rpc attribution.v1.AttributionService.GetSnapshot + */ + getSnapshot: { + methodKind: "unary"; + input: typeof GetSnapshotRequestSchema; + output: typeof GetSnapshotResponseSchema; + }, + /** + * @generated from rpc attribution.v1.AttributionService.ListSnapshots + */ + listSnapshots: { + methodKind: "unary"; + input: typeof ListSnapshotsRequestSchema; + output: typeof ListSnapshotsResponseSchema; + }, }> = /*@__PURE__*/ serviceDesc(file_attribution_v1_attribution, 0); diff --git a/gen/ts/entities/v1/entities_connect.ts b/gen/ts/entities/v1/entities_connect.ts index 2537c42..bba77c0 100644 --- a/gen/ts/entities/v1/entities_connect.ts +++ b/gen/ts/entities/v1/entities_connect.ts @@ -3,7 +3,7 @@ /* eslint-disable */ // @ts-nocheck -import { CorrelateRequest, CorrelateResponse, GetCanonicalRequest, GetCanonicalResponse, GetCorrelationGraphRequest, GetCorrelationGraphResponse, IngestResultRequest, IngestResultResponse, LinkEntityRequest, LinkEntityResponse, ResolveRequest, ResolveResponse, SearchRequest, SearchResponse, UnlinkEntityRequest, UnlinkEntityResponse } from "./entities_pb.js"; +import { CorrelateRequest, CorrelateResponse, GetCanonicalRequest, GetCanonicalResponse, GetCorrelationGraphRequest, GetCorrelationGraphResponse, IngestResultRequest, IngestResultResponse, LinkEntityRequest, LinkEntityResponse, MergeEntitiesRequest, MergeEntitiesResponse, ResolveRequest, ResolveResponse, SearchRequest, SearchResponse, SplitEntityRequest, SplitEntityResponse, UnlinkEntityRequest, UnlinkEntityResponse } from "./entities_pb.js"; import { MethodKind } from "@bufbuild/protobuf"; /** @@ -68,6 +68,24 @@ export const EntityService = { O: UnlinkEntityResponse, kind: MethodKind.Unary, }, + /** + * @generated from rpc entities.v1.EntityService.MergeEntities + */ + mergeEntities: { + name: "MergeEntities", + I: MergeEntitiesRequest, + O: MergeEntitiesResponse, + kind: MethodKind.Unary, + }, + /** + * @generated from rpc entities.v1.EntityService.SplitEntity + */ + splitEntity: { + name: "SplitEntity", + I: SplitEntityRequest, + O: SplitEntityResponse, + kind: MethodKind.Unary, + }, /** * @generated from rpc entities.v1.EntityService.GetCorrelationGraph */ diff --git a/gen/ts/entities/v1/entities_pb.ts b/gen/ts/entities/v1/entities_pb.ts index 893e5d7..8b813dd 100644 --- a/gen/ts/entities/v1/entities_pb.ts +++ b/gen/ts/entities/v1/entities_pb.ts @@ -12,7 +12,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file entities/v1/entities.proto. */ export const file_entities_v1_entities: GenFile = /*@__PURE__*/ - fileDesc("ChplbnRpdGllcy92MS9lbnRpdGllcy5wcm90bxILZW50aXRpZXMudjEigwIKD0Nhbm9uaWNhbEVudGl0eRIKCgJpZBgBIAEoCRIUCgx3b3Jrc3BhY2VfaWQYAiABKAkSLQoMcHJpbWFyeV90eXBlGAMgASgOMhcuZW50aXRpZXMudjEuRW50aXR5VHlwZRIUCgxwcmltYXJ5X25hbWUYBCABKAkSKQoEcmVmcxgFIAMoCzIbLmVudGl0aWVzLnYxLkNyb3NzU3lzdGVtUmVmEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIrQBCg5Dcm9zc1N5c3RlbVJlZhIWCg5pbnRlZ3JhdGlvbl9pZBgBIAEoCRIRCglyZWNvcmRfaWQYAiABKAkSLAoLZW50aXR5X3R5cGUYAyABKA4yFy5lbnRpdGllcy52MS5FbnRpdHlUeXBlEhQKDGRpc3BsYXlfbmFtZRgEIAEoCRIOCgZlbWFpbHMYBSADKAkSDwoHZG9tYWlucxgGIAMoCRISCgpjb25maWRlbmNlGAcgASgCImsKEENvcnJlbGF0aW9uTWF0Y2gSLAoKbWF0Y2hlZF9ieRgBIAEoDjIYLmVudGl0aWVzLnYxLk1hdGNoTWV0aG9kEhUKDW1hdGNoZWRfdmFsdWUYAiABKAkSEgoKY29uZmlkZW5jZRgDIAEoAiLDAQoQQ29ycmVsYXRpb25Hcm91cBIKCgJpZBgBIAEoCRIUCgxwcmltYXJ5X25hbWUYAiABKAkSLQoMcHJpbWFyeV90eXBlGAMgASgOMhcuZW50aXRpZXMudjEuRW50aXR5VHlwZRIuCghlbnRpdGllcxgEIAMoCzIcLmVudGl0aWVzLnYxLkNhbm9uaWNhbEVudGl0eRIuCgdtYXRjaGVzGAUgAygLMh0uZW50aXRpZXMudjEuQ29ycmVsYXRpb25NYXRjaCJRCg5SZXNvbHZlUmVxdWVzdBIUCgx3b3Jrc3BhY2VfaWQYASABKAkSFgoOaW50ZWdyYXRpb25faWQYAiABKAkSEQoJcmVjb3JkX2lkGAMgASgJIj8KD1Jlc29sdmVSZXNwb25zZRIsCgZlbnRpdHkYASABKAsyHC5lbnRpdGllcy52MS5DYW5vbmljYWxFbnRpdHkiXwoQQ29ycmVsYXRlUmVxdWVzdBIUCgx3b3Jrc3BhY2VfaWQYASABKAkSDgoGZW1haWxzGAIgAygJEg8KB2RvbWFpbnMYAyADKAkSFAoMY29tcGFueV9uYW1lGAQgASgJIkIKEUNvcnJlbGF0ZVJlc3BvbnNlEi0KBmdyb3VwcxgBIAMoCzIdLmVudGl0aWVzLnYxLkNvcnJlbGF0aW9uR3JvdXAiIQoTR2V0Q2Fub25pY2FsUmVxdWVzdBIKCgJpZBgBIAEoCSJEChRHZXRDYW5vbmljYWxSZXNwb25zZRIsCgZlbnRpdHkYASABKAsyHC5lbnRpdGllcy52MS5DYW5vbmljYWxFbnRpdHkigQEKDVNlYXJjaFJlcXVlc3QSFAoMd29ya3NwYWNlX2lkGAEgASgJEg0KBXF1ZXJ5GAIgASgJEiwKC2VudGl0eV90eXBlGAMgASgOMhcuZW50aXRpZXMudjEuRW50aXR5VHlwZRINCgVsaW1pdBgEIAEoBRIOCgZvZmZzZXQYBSABKAUiTwoOU2VhcmNoUmVzcG9uc2USLgoIZW50aXRpZXMYASADKAsyHC5lbnRpdGllcy52MS5DYW5vbmljYWxFbnRpdHkSDQoFdG90YWwYAiABKAUiWgoRTGlua0VudGl0eVJlcXVlc3QSGwoTY2Fub25pY2FsX2VudGl0eV9pZBgBIAEoCRIoCgNyZWYYAiABKAsyGy5lbnRpdGllcy52MS5Dcm9zc1N5c3RlbVJlZiJCChJMaW5rRW50aXR5UmVzcG9uc2USLAoGZW50aXR5GAEgASgLMhwuZW50aXRpZXMudjEuQ2Fub25pY2FsRW50aXR5Il0KE1VubGlua0VudGl0eVJlcXVlc3QSGwoTY2Fub25pY2FsX2VudGl0eV9pZBgBIAEoCRIWCg5pbnRlZ3JhdGlvbl9pZBgCIAEoCRIRCglyZWNvcmRfaWQYAyABKAkiRAoUVW5saW5rRW50aXR5UmVzcG9uc2USLAoGZW50aXR5GAEgASgLMhwuZW50aXRpZXMudjEuQ2Fub25pY2FsRW50aXR5IkgKGkdldENvcnJlbGF0aW9uR3JhcGhSZXF1ZXN0EhsKE2Nhbm9uaWNhbF9lbnRpdHlfaWQYASABKAkSDQoFZGVwdGgYAiABKAUiTAobR2V0Q29ycmVsYXRpb25HcmFwaFJlc3BvbnNlEi0KBmdyb3VwcxgBIAMoCzIdLmVudGl0aWVzLnYxLkNvcnJlbGF0aW9uR3JvdXAiuwEKE0luZ2VzdFJlc3VsdFJlcXVlc3QSFAoMd29ya3NwYWNlX2lkGAEgASgJEhYKDmludGVncmF0aW9uX2lkGAIgASgJEhEKCXJlY29yZF9pZBgDIAEoCRIsCgtlbnRpdHlfdHlwZRgEIAEoDjIXLmVudGl0aWVzLnYxLkVudGl0eVR5cGUSFAoMZGlzcGxheV9uYW1lGAUgASgJEg4KBmVtYWlscxgGIAMoCRIPCgdkb21haW5zGAcgAygJIlUKFEluZ2VzdFJlc3VsdFJlc3BvbnNlEiwKBmVudGl0eRgBIAEoCzIcLmVudGl0aWVzLnYxLkNhbm9uaWNhbEVudGl0eRIPCgdjcmVhdGVkGAIgASgIKsABCgpFbnRpdHlUeXBlEhsKF0VOVElUWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTRU5USVRZX1RZUEVfQ09OVEFDVBABEhcKE0VOVElUWV9UWVBFX0NPTVBBTlkQAhIUChBFTlRJVFlfVFlQRV9ERUFMEAMSFgoSRU5USVRZX1RZUEVfVElDS0VUEAQSGAoURU5USVRZX1RZUEVfQ1VTVE9NRVIQBRIbChdFTlRJVFlfVFlQRV9PUFBPUlRVTklUWRAGKrIBCgtNYXRjaE1ldGhvZBIcChhNQVRDSF9NRVRIT0RfVU5TUEVDSUZJRUQQABIWChJNQVRDSF9NRVRIT0RfRU1BSUwQARIXChNNQVRDSF9NRVRIT0RfRE9NQUlOEAISHQoZTUFUQ0hfTUVUSE9EX0NPTVBBTllfTkFNRRADEhwKGE1BVENIX01FVEhPRF9SRUNPUkRfTkFNRRAEEhcKE01BVENIX01FVEhPRF9NQU5VQUwQBTKcBQoNRW50aXR5U2VydmljZRJECgdSZXNvbHZlEhsuZW50aXRpZXMudjEuUmVzb2x2ZVJlcXVlc3QaHC5lbnRpdGllcy52MS5SZXNvbHZlUmVzcG9uc2USSgoJQ29ycmVsYXRlEh0uZW50aXRpZXMudjEuQ29ycmVsYXRlUmVxdWVzdBoeLmVudGl0aWVzLnYxLkNvcnJlbGF0ZVJlc3BvbnNlElMKDEdldENhbm9uaWNhbBIgLmVudGl0aWVzLnYxLkdldENhbm9uaWNhbFJlcXVlc3QaIS5lbnRpdGllcy52MS5HZXRDYW5vbmljYWxSZXNwb25zZRJBCgZTZWFyY2gSGi5lbnRpdGllcy52MS5TZWFyY2hSZXF1ZXN0GhsuZW50aXRpZXMudjEuU2VhcmNoUmVzcG9uc2USTQoKTGlua0VudGl0eRIeLmVudGl0aWVzLnYxLkxpbmtFbnRpdHlSZXF1ZXN0Gh8uZW50aXRpZXMudjEuTGlua0VudGl0eVJlc3BvbnNlElMKDFVubGlua0VudGl0eRIgLmVudGl0aWVzLnYxLlVubGlua0VudGl0eVJlcXVlc3QaIS5lbnRpdGllcy52MS5VbmxpbmtFbnRpdHlSZXNwb25zZRJoChNHZXRDb3JyZWxhdGlvbkdyYXBoEicuZW50aXRpZXMudjEuR2V0Q29ycmVsYXRpb25HcmFwaFJlcXVlc3QaKC5lbnRpdGllcy52MS5HZXRDb3JyZWxhdGlvbkdyYXBoUmVzcG9uc2USUwoMSW5nZXN0UmVzdWx0EiAuZW50aXRpZXMudjEuSW5nZXN0UmVzdWx0UmVxdWVzdBohLmVudGl0aWVzLnYxLkluZ2VzdFJlc3VsdFJlc3BvbnNlQjhaNmdpdGh1Yi5jb20vZXZhbG9wcy9wcm90by9nZW4vZ28vZW50aXRpZXMvdjE7ZW50aXRpZXN2MWIGcHJvdG8z", [file_google_protobuf_timestamp]); + fileDesc("ChplbnRpdGllcy92MS9lbnRpdGllcy5wcm90bxILZW50aXRpZXMudjEigwIKD0Nhbm9uaWNhbEVudGl0eRIKCgJpZBgBIAEoCRIUCgx3b3Jrc3BhY2VfaWQYAiABKAkSLQoMcHJpbWFyeV90eXBlGAMgASgOMhcuZW50aXRpZXMudjEuRW50aXR5VHlwZRIUCgxwcmltYXJ5X25hbWUYBCABKAkSKQoEcmVmcxgFIAMoCzIbLmVudGl0aWVzLnYxLkNyb3NzU3lzdGVtUmVmEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIrQBCg5Dcm9zc1N5c3RlbVJlZhIWCg5pbnRlZ3JhdGlvbl9pZBgBIAEoCRIRCglyZWNvcmRfaWQYAiABKAkSLAoLZW50aXR5X3R5cGUYAyABKA4yFy5lbnRpdGllcy52MS5FbnRpdHlUeXBlEhQKDGRpc3BsYXlfbmFtZRgEIAEoCRIOCgZlbWFpbHMYBSADKAkSDwoHZG9tYWlucxgGIAMoCRISCgpjb25maWRlbmNlGAcgASgCImsKEENvcnJlbGF0aW9uTWF0Y2gSLAoKbWF0Y2hlZF9ieRgBIAEoDjIYLmVudGl0aWVzLnYxLk1hdGNoTWV0aG9kEhUKDW1hdGNoZWRfdmFsdWUYAiABKAkSEgoKY29uZmlkZW5jZRgDIAEoAiLDAQoQQ29ycmVsYXRpb25Hcm91cBIKCgJpZBgBIAEoCRIUCgxwcmltYXJ5X25hbWUYAiABKAkSLQoMcHJpbWFyeV90eXBlGAMgASgOMhcuZW50aXRpZXMudjEuRW50aXR5VHlwZRIuCghlbnRpdGllcxgEIAMoCzIcLmVudGl0aWVzLnYxLkNhbm9uaWNhbEVudGl0eRIuCgdtYXRjaGVzGAUgAygLMh0uZW50aXRpZXMudjEuQ29ycmVsYXRpb25NYXRjaCJRCg5SZXNvbHZlUmVxdWVzdBIUCgx3b3Jrc3BhY2VfaWQYASABKAkSFgoOaW50ZWdyYXRpb25faWQYAiABKAkSEQoJcmVjb3JkX2lkGAMgASgJIj8KD1Jlc29sdmVSZXNwb25zZRIsCgZlbnRpdHkYASABKAsyHC5lbnRpdGllcy52MS5DYW5vbmljYWxFbnRpdHkiXwoQQ29ycmVsYXRlUmVxdWVzdBIUCgx3b3Jrc3BhY2VfaWQYASABKAkSDgoGZW1haWxzGAIgAygJEg8KB2RvbWFpbnMYAyADKAkSFAoMY29tcGFueV9uYW1lGAQgASgJIkIKEUNvcnJlbGF0ZVJlc3BvbnNlEi0KBmdyb3VwcxgBIAMoCzIdLmVudGl0aWVzLnYxLkNvcnJlbGF0aW9uR3JvdXAiIQoTR2V0Q2Fub25pY2FsUmVxdWVzdBIKCgJpZBgBIAEoCSJEChRHZXRDYW5vbmljYWxSZXNwb25zZRIsCgZlbnRpdHkYASABKAsyHC5lbnRpdGllcy52MS5DYW5vbmljYWxFbnRpdHkigQEKDVNlYXJjaFJlcXVlc3QSFAoMd29ya3NwYWNlX2lkGAEgASgJEg0KBXF1ZXJ5GAIgASgJEiwKC2VudGl0eV90eXBlGAMgASgOMhcuZW50aXRpZXMudjEuRW50aXR5VHlwZRINCgVsaW1pdBgEIAEoBRIOCgZvZmZzZXQYBSABKAUiTwoOU2VhcmNoUmVzcG9uc2USLgoIZW50aXRpZXMYASADKAsyHC5lbnRpdGllcy52MS5DYW5vbmljYWxFbnRpdHkSDQoFdG90YWwYAiABKAUiWgoRTGlua0VudGl0eVJlcXVlc3QSGwoTY2Fub25pY2FsX2VudGl0eV9pZBgBIAEoCRIoCgNyZWYYAiABKAsyGy5lbnRpdGllcy52MS5Dcm9zc1N5c3RlbVJlZiJCChJMaW5rRW50aXR5UmVzcG9uc2USLAoGZW50aXR5GAEgASgLMhwuZW50aXRpZXMudjEuQ2Fub25pY2FsRW50aXR5Il0KE1VubGlua0VudGl0eVJlcXVlc3QSGwoTY2Fub25pY2FsX2VudGl0eV9pZBgBIAEoCRIWCg5pbnRlZ3JhdGlvbl9pZBgCIAEoCRIRCglyZWNvcmRfaWQYAyABKAkiRAoUVW5saW5rRW50aXR5UmVzcG9uc2USLAoGZW50aXR5GAEgASgLMhwuZW50aXRpZXMudjEuQ2Fub25pY2FsRW50aXR5Ij4KEUNyb3NzU3lzdGVtUmVmS2V5EhYKDmludGVncmF0aW9uX2lkGAEgASgJEhEKCXJlY29yZF9pZBgCIAEoCSKkAQoUTWVyZ2VFbnRpdGllc1JlcXVlc3QSIgoadGFyZ2V0X2Nhbm9uaWNhbF9lbnRpdHlfaWQYASABKAkSIwobc291cmNlX2Nhbm9uaWNhbF9lbnRpdHlfaWRzGAIgAygJEi0KDHByaW1hcnlfdHlwZRgDIAEoDjIXLmVudGl0aWVzLnYxLkVudGl0eVR5cGUSFAoMcHJpbWFyeV9uYW1lGAQgASgJInwKFU1lcmdlRW50aXRpZXNSZXNwb25zZRIsCgZlbnRpdHkYASABKAsyHC5lbnRpdGllcy52MS5DYW5vbmljYWxFbnRpdHkSNQoPbWVyZ2VkX2VudGl0aWVzGAIgAygLMhwuZW50aXRpZXMudjEuQ2Fub25pY2FsRW50aXR5IqwBChJTcGxpdEVudGl0eVJlcXVlc3QSGwoTY2Fub25pY2FsX2VudGl0eV9pZBgBIAEoCRIsCgRyZWZzGAIgAygLMh4uZW50aXRpZXMudjEuQ3Jvc3NTeXN0ZW1SZWZLZXkSMQoQbmV3X3ByaW1hcnlfdHlwZRgDIAEoDjIXLmVudGl0aWVzLnYxLkVudGl0eVR5cGUSGAoQbmV3X3ByaW1hcnlfbmFtZRgEIAEoCSJ+ChNTcGxpdEVudGl0eVJlc3BvbnNlEjMKDXNvdXJjZV9lbnRpdHkYASABKAsyHC5lbnRpdGllcy52MS5DYW5vbmljYWxFbnRpdHkSMgoMc3BsaXRfZW50aXR5GAIgASgLMhwuZW50aXRpZXMudjEuQ2Fub25pY2FsRW50aXR5IkgKGkdldENvcnJlbGF0aW9uR3JhcGhSZXF1ZXN0EhsKE2Nhbm9uaWNhbF9lbnRpdHlfaWQYASABKAkSDQoFZGVwdGgYAiABKAUiTAobR2V0Q29ycmVsYXRpb25HcmFwaFJlc3BvbnNlEi0KBmdyb3VwcxgBIAMoCzIdLmVudGl0aWVzLnYxLkNvcnJlbGF0aW9uR3JvdXAiuwEKE0luZ2VzdFJlc3VsdFJlcXVlc3QSFAoMd29ya3NwYWNlX2lkGAEgASgJEhYKDmludGVncmF0aW9uX2lkGAIgASgJEhEKCXJlY29yZF9pZBgDIAEoCRIsCgtlbnRpdHlfdHlwZRgEIAEoDjIXLmVudGl0aWVzLnYxLkVudGl0eVR5cGUSFAoMZGlzcGxheV9uYW1lGAUgASgJEg4KBmVtYWlscxgGIAMoCRIPCgdkb21haW5zGAcgAygJIlUKFEluZ2VzdFJlc3VsdFJlc3BvbnNlEiwKBmVudGl0eRgBIAEoCzIcLmVudGl0aWVzLnYxLkNhbm9uaWNhbEVudGl0eRIPCgdjcmVhdGVkGAIgASgIKsABCgpFbnRpdHlUeXBlEhsKF0VOVElUWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTRU5USVRZX1RZUEVfQ09OVEFDVBABEhcKE0VOVElUWV9UWVBFX0NPTVBBTlkQAhIUChBFTlRJVFlfVFlQRV9ERUFMEAMSFgoSRU5USVRZX1RZUEVfVElDS0VUEAQSGAoURU5USVRZX1RZUEVfQ1VTVE9NRVIQBRIbChdFTlRJVFlfVFlQRV9PUFBPUlRVTklUWRAGKrIBCgtNYXRjaE1ldGhvZBIcChhNQVRDSF9NRVRIT0RfVU5TUEVDSUZJRUQQABIWChJNQVRDSF9NRVRIT0RfRU1BSUwQARIXChNNQVRDSF9NRVRIT0RfRE9NQUlOEAISHQoZTUFUQ0hfTUVUSE9EX0NPTVBBTllfTkFNRRADEhwKGE1BVENIX01FVEhPRF9SRUNPUkRfTkFNRRAEEhcKE01BVENIX01FVEhPRF9NQU5VQUwQBTLGBgoNRW50aXR5U2VydmljZRJECgdSZXNvbHZlEhsuZW50aXRpZXMudjEuUmVzb2x2ZVJlcXVlc3QaHC5lbnRpdGllcy52MS5SZXNvbHZlUmVzcG9uc2USSgoJQ29ycmVsYXRlEh0uZW50aXRpZXMudjEuQ29ycmVsYXRlUmVxdWVzdBoeLmVudGl0aWVzLnYxLkNvcnJlbGF0ZVJlc3BvbnNlElMKDEdldENhbm9uaWNhbBIgLmVudGl0aWVzLnYxLkdldENhbm9uaWNhbFJlcXVlc3QaIS5lbnRpdGllcy52MS5HZXRDYW5vbmljYWxSZXNwb25zZRJBCgZTZWFyY2gSGi5lbnRpdGllcy52MS5TZWFyY2hSZXF1ZXN0GhsuZW50aXRpZXMudjEuU2VhcmNoUmVzcG9uc2USTQoKTGlua0VudGl0eRIeLmVudGl0aWVzLnYxLkxpbmtFbnRpdHlSZXF1ZXN0Gh8uZW50aXRpZXMudjEuTGlua0VudGl0eVJlc3BvbnNlElMKDFVubGlua0VudGl0eRIgLmVudGl0aWVzLnYxLlVubGlua0VudGl0eVJlcXVlc3QaIS5lbnRpdGllcy52MS5VbmxpbmtFbnRpdHlSZXNwb25zZRJWCg1NZXJnZUVudGl0aWVzEiEuZW50aXRpZXMudjEuTWVyZ2VFbnRpdGllc1JlcXVlc3QaIi5lbnRpdGllcy52MS5NZXJnZUVudGl0aWVzUmVzcG9uc2USUAoLU3BsaXRFbnRpdHkSHy5lbnRpdGllcy52MS5TcGxpdEVudGl0eVJlcXVlc3QaIC5lbnRpdGllcy52MS5TcGxpdEVudGl0eVJlc3BvbnNlEmgKE0dldENvcnJlbGF0aW9uR3JhcGgSJy5lbnRpdGllcy52MS5HZXRDb3JyZWxhdGlvbkdyYXBoUmVxdWVzdBooLmVudGl0aWVzLnYxLkdldENvcnJlbGF0aW9uR3JhcGhSZXNwb25zZRJTCgxJbmdlc3RSZXN1bHQSIC5lbnRpdGllcy52MS5Jbmdlc3RSZXN1bHRSZXF1ZXN0GiEuZW50aXRpZXMudjEuSW5nZXN0UmVzdWx0UmVzcG9uc2VCOFo2Z2l0aHViLmNvbS9ldmFsb3BzL3Byb3RvL2dlbi9nby9lbnRpdGllcy92MTtlbnRpdGllc3YxYgZwcm90bzM", [file_google_protobuf_timestamp]); /** * CanonicalEntity is the unified, deduplicated entity record. @@ -449,6 +449,136 @@ export type UnlinkEntityResponse = Message<"entities.v1.UnlinkEntityResponse"> & export const UnlinkEntityResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_entities_v1_entities, 15); +/** + * @generated from message entities.v1.CrossSystemRefKey + */ +export type CrossSystemRefKey = Message<"entities.v1.CrossSystemRefKey"> & { + /** + * @generated from field: string integration_id = 1; + */ + integrationId: string; + + /** + * @generated from field: string record_id = 2; + */ + recordId: string; +}; + +/** + * Describes the message entities.v1.CrossSystemRefKey. + * Use `create(CrossSystemRefKeySchema)` to create a new message. + */ +export const CrossSystemRefKeySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_entities_v1_entities, 16); + +/** + * @generated from message entities.v1.MergeEntitiesRequest + */ +export type MergeEntitiesRequest = Message<"entities.v1.MergeEntitiesRequest"> & { + /** + * @generated from field: string target_canonical_entity_id = 1; + */ + targetCanonicalEntityId: string; + + /** + * @generated from field: repeated string source_canonical_entity_ids = 2; + */ + sourceCanonicalEntityIds: string[]; + + /** + * @generated from field: entities.v1.EntityType primary_type = 3; + */ + primaryType: EntityType; + + /** + * @generated from field: string primary_name = 4; + */ + primaryName: string; +}; + +/** + * Describes the message entities.v1.MergeEntitiesRequest. + * Use `create(MergeEntitiesRequestSchema)` to create a new message. + */ +export const MergeEntitiesRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_entities_v1_entities, 17); + +/** + * @generated from message entities.v1.MergeEntitiesResponse + */ +export type MergeEntitiesResponse = Message<"entities.v1.MergeEntitiesResponse"> & { + /** + * @generated from field: entities.v1.CanonicalEntity entity = 1; + */ + entity?: CanonicalEntity; + + /** + * @generated from field: repeated entities.v1.CanonicalEntity merged_entities = 2; + */ + mergedEntities: CanonicalEntity[]; +}; + +/** + * Describes the message entities.v1.MergeEntitiesResponse. + * Use `create(MergeEntitiesResponseSchema)` to create a new message. + */ +export const MergeEntitiesResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_entities_v1_entities, 18); + +/** + * @generated from message entities.v1.SplitEntityRequest + */ +export type SplitEntityRequest = Message<"entities.v1.SplitEntityRequest"> & { + /** + * @generated from field: string canonical_entity_id = 1; + */ + canonicalEntityId: string; + + /** + * @generated from field: repeated entities.v1.CrossSystemRefKey refs = 2; + */ + refs: CrossSystemRefKey[]; + + /** + * @generated from field: entities.v1.EntityType new_primary_type = 3; + */ + newPrimaryType: EntityType; + + /** + * @generated from field: string new_primary_name = 4; + */ + newPrimaryName: string; +}; + +/** + * Describes the message entities.v1.SplitEntityRequest. + * Use `create(SplitEntityRequestSchema)` to create a new message. + */ +export const SplitEntityRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_entities_v1_entities, 19); + +/** + * @generated from message entities.v1.SplitEntityResponse + */ +export type SplitEntityResponse = Message<"entities.v1.SplitEntityResponse"> & { + /** + * @generated from field: entities.v1.CanonicalEntity source_entity = 1; + */ + sourceEntity?: CanonicalEntity; + + /** + * @generated from field: entities.v1.CanonicalEntity split_entity = 2; + */ + splitEntity?: CanonicalEntity; +}; + +/** + * Describes the message entities.v1.SplitEntityResponse. + * Use `create(SplitEntityResponseSchema)` to create a new message. + */ +export const SplitEntityResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_entities_v1_entities, 20); + /** * @generated from message entities.v1.GetCorrelationGraphRequest */ @@ -469,7 +599,7 @@ export type GetCorrelationGraphRequest = Message<"entities.v1.GetCorrelationGrap * Use `create(GetCorrelationGraphRequestSchema)` to create a new message. */ export const GetCorrelationGraphRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_entities_v1_entities, 16); + messageDesc(file_entities_v1_entities, 21); /** * @generated from message entities.v1.GetCorrelationGraphResponse @@ -486,7 +616,7 @@ export type GetCorrelationGraphResponse = Message<"entities.v1.GetCorrelationGra * Use `create(GetCorrelationGraphResponseSchema)` to create a new message. */ export const GetCorrelationGraphResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_entities_v1_entities, 17); + messageDesc(file_entities_v1_entities, 22); /** * @generated from message entities.v1.IngestResultRequest @@ -533,7 +663,7 @@ export type IngestResultRequest = Message<"entities.v1.IngestResultRequest"> & { * Use `create(IngestResultRequestSchema)` to create a new message. */ export const IngestResultRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_entities_v1_entities, 18); + messageDesc(file_entities_v1_entities, 23); /** * @generated from message entities.v1.IngestResultResponse @@ -555,7 +685,7 @@ export type IngestResultResponse = Message<"entities.v1.IngestResultResponse"> & * Use `create(IngestResultResponseSchema)` to create a new message. */ export const IngestResultResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_entities_v1_entities, 19); + messageDesc(file_entities_v1_entities, 24); /** * EntityType identifies the kind of entity across systems. @@ -702,6 +832,22 @@ export const EntityService: GenService<{ input: typeof UnlinkEntityRequestSchema; output: typeof UnlinkEntityResponseSchema; }, + /** + * @generated from rpc entities.v1.EntityService.MergeEntities + */ + mergeEntities: { + methodKind: "unary"; + input: typeof MergeEntitiesRequestSchema; + output: typeof MergeEntitiesResponseSchema; + }, + /** + * @generated from rpc entities.v1.EntityService.SplitEntity + */ + splitEntity: { + methodKind: "unary"; + input: typeof SplitEntityRequestSchema; + output: typeof SplitEntityResponseSchema; + }, /** * @generated from rpc entities.v1.EntityService.GetCorrelationGraph */ diff --git a/proto/attribution/v1/attribution.proto b/proto/attribution/v1/attribution.proto index 578d73d..d671f62 100644 --- a/proto/attribution/v1/attribution.proto +++ b/proto/attribution/v1/attribution.proto @@ -2,17 +2,20 @@ syntax = "proto3"; package attribution.v1; -option go_package = "github.com/evalops/proto/gen/go/attribution/v1;attributionv1"; - import "google/protobuf/timestamp.proto"; import "traces/v1/traces.proto"; +option go_package = "github.com/evalops/proto/gen/go/attribution/v1;attributionv1"; + // AttributionService computes revenue attribution and ROI across traces and usage. service AttributionService { rpc GenerateReport(GenerateReportRequest) returns (GenerateReportResponse); rpc GetReport(GetReportRequest) returns (GetReportResponse); rpc ListReports(ListReportsRequest) returns (ListReportsResponse); rpc ExportReport(ExportReportRequest) returns (ExportReportResponse); + rpc RecordSignals(RecordSignalsRequest) returns (RecordSignalsResponse); + rpc GetSnapshot(GetSnapshotRequest) returns (GetSnapshotResponse); + rpc ListSnapshots(ListSnapshotsRequest) returns (ListSnapshotsResponse); } enum AttributionModel { @@ -28,6 +31,18 @@ enum ReportExportFormat { REPORT_EXPORT_FORMAT_CSV = 2; } +enum AttributionSubjectKind { + ATTRIBUTION_SUBJECT_KIND_UNSPECIFIED = 0; + ATTRIBUTION_SUBJECT_KIND_DEAL = 1; + ATTRIBUTION_SUBJECT_KIND_OBJECTIVE = 2; +} + +enum AttributionSignalType { + ATTRIBUTION_SIGNAL_TYPE_UNSPECIFIED = 0; + ATTRIBUTION_SIGNAL_TYPE_OBJECTIVE_COMPLETED = 1; + ATTRIBUTION_SIGNAL_TYPE_TRACE_COMPLETED = 2; +} + message AttributionQuery { string workspace_id = 1; string organization_id = 2; @@ -36,6 +51,7 @@ message AttributionQuery { google.protobuf.Timestamp start_time = 5; google.protobuf.Timestamp end_time = 6; bool include_team_rollups = 7; + repeated string objective_ids = 8; } message DealContext { @@ -51,6 +67,18 @@ message DealContext { google.protobuf.Timestamp updated_at = 10; } +message ObjectiveContext { + string objective_id = 1; + string agent_id = 2; + string surface = 3; + string title = 4; + string description = 5; + string state = 6; + google.protobuf.Timestamp created_at = 7; + google.protobuf.Timestamp updated_at = 8; + google.protobuf.Timestamp completed_at = 9; +} + message TraceTouchpoint { traces.v1.TraceSummary trace = 1; repeated string match_reasons = 2; @@ -90,6 +118,25 @@ message TeamSummary { repeated string agent_ids = 5; } +message ObjectiveAgentSummary { + string agent_id = 1; + double attribution_weight = 2; + double attributed_outcome_count = 3; + double total_cost_usd = 4; + int32 trace_count = 5; + int32 usage_count = 6; + repeated string trace_ids = 7; + repeated string usage_record_ids = 8; +} + +message ObjectiveTeamSummary { + string team_id = 1; + double attribution_weight = 2; + double attributed_outcome_count = 3; + double total_cost_usd = 4; + repeated string agent_ids = 5; +} + message DealAttribution { DealContext deal = 1; repeated TraceTouchpoint trace_touchpoints = 2; @@ -102,6 +149,18 @@ message DealAttribution { double unattributed_cost_usd = 9; } +message ObjectiveOutcomeAttribution { + ObjectiveContext objective = 1; + repeated TraceTouchpoint trace_touchpoints = 2; + repeated UsageTouchpoint usage_touchpoints = 3; + repeated ObjectiveAgentSummary agent_summaries = 4; + repeated ObjectiveTeamSummary team_summaries = 5; + double total_attributed_outcome_count = 6; + double total_attributed_cost_usd = 7; + double unattributed_outcome_count = 8; + double unattributed_cost_usd = 9; +} + message AttributionReport { string id = 1; AttributionQuery query = 2; @@ -109,6 +168,9 @@ message AttributionReport { repeated DealAttribution deals = 4; repeated AgentSummary agent_summaries = 5; repeated TeamSummary team_summaries = 6; + repeated ObjectiveOutcomeAttribution objective_outcomes = 7; + repeated ObjectiveAgentSummary objective_agent_summaries = 8; + repeated ObjectiveTeamSummary objective_team_summaries = 9; } message AttributionReportSummary { @@ -118,6 +180,46 @@ message AttributionReportSummary { int32 deal_count = 4; int32 agent_count = 5; int32 team_count = 6; + int32 objective_outcome_count = 7; +} + +message AttributionSnapshot { + string id = 1; + string workspace_id = 2; + string organization_id = 3; + AttributionSubjectKind subject_kind = 4; + string subject_id = 5; + AttributionModel model = 6; + AttributionSignalType signal_type = 7; + string signal_id = 8; + google.protobuf.Timestamp window_start = 9; + google.protobuf.Timestamp window_end = 10; + google.protobuf.Timestamp recorded_at = 11; + oneof attribution { + DealAttribution deal = 12; + ObjectiveOutcomeAttribution objective_outcome = 13; + } +} + +message ObjectiveCompletionSignal { + string workspace_id = 1; + string organization_id = 2; + string objective_id = 3; + google.protobuf.Timestamp completed_at = 4; +} + +message TraceCompletionSignal { + string workspace_id = 1; + string organization_id = 2; + string trace_id = 3; + google.protobuf.Timestamp completed_at = 4; +} + +message AttributionSignal { + oneof signal { + ObjectiveCompletionSignal objective_completion = 1; + TraceCompletionSignal trace_completion = 2; + } } message GenerateReportRequest { @@ -159,3 +261,36 @@ message ExportReportResponse { string content_type = 2; string filename = 3; } + +message RecordSignalsRequest { + repeated AttributionSignal signals = 1; + repeated AttributionModel models = 2; + bool include_team_rollups = 3; +} + +message RecordSignalsResponse { + repeated AttributionSnapshot snapshots = 1; +} + +message GetSnapshotRequest { + string snapshot_id = 1; +} + +message GetSnapshotResponse { + AttributionSnapshot snapshot = 1; +} + +message ListSnapshotsRequest { + string organization_id = 1; + string workspace_id = 2; + AttributionSubjectKind subject_kind = 3; + string subject_id = 4; + AttributionModel model = 5; + int32 limit = 6; + int32 offset = 7; +} + +message ListSnapshotsResponse { + repeated AttributionSnapshot snapshots = 1; + bool has_more = 2; +} diff --git a/proto/entities/v1/entities.proto b/proto/entities/v1/entities.proto index 362f538..67a07d8 100644 --- a/proto/entities/v1/entities.proto +++ b/proto/entities/v1/entities.proto @@ -14,6 +14,8 @@ service EntityService { rpc Search(SearchRequest) returns (SearchResponse); rpc LinkEntity(LinkEntityRequest) returns (LinkEntityResponse); rpc UnlinkEntity(UnlinkEntityRequest) returns (UnlinkEntityResponse); + rpc MergeEntities(MergeEntitiesRequest) returns (MergeEntitiesResponse); + rpc SplitEntity(SplitEntityRequest) returns (SplitEntityResponse); rpc GetCorrelationGraph(GetCorrelationGraphRequest) returns (GetCorrelationGraphResponse); rpc IngestResult(IngestResultRequest) returns (IngestResultResponse); } @@ -138,6 +140,35 @@ message UnlinkEntityResponse { CanonicalEntity entity = 1; } +message CrossSystemRefKey { + string integration_id = 1; + string record_id = 2; +} + +message MergeEntitiesRequest { + string target_canonical_entity_id = 1; + repeated string source_canonical_entity_ids = 2; + EntityType primary_type = 3; + string primary_name = 4; +} + +message MergeEntitiesResponse { + CanonicalEntity entity = 1; + repeated CanonicalEntity merged_entities = 2; +} + +message SplitEntityRequest { + string canonical_entity_id = 1; + repeated CrossSystemRefKey refs = 2; + EntityType new_primary_type = 3; + string new_primary_name = 4; +} + +message SplitEntityResponse { + CanonicalEntity source_entity = 1; + CanonicalEntity split_entity = 2; +} + message GetCorrelationGraphRequest { string canonical_entity_id = 1; int32 depth = 2;