diff --git a/gen/go/attribution/v1/attribution.pb.go b/gen/go/attribution/v1/attribution.pb.go index 37fc366..ba45437 100644 --- a/gen/go/attribution/v1/attribution.pb.go +++ b/gen/go/attribution/v1/attribution.pb.go @@ -884,6 +884,90 @@ func (x *AttributionReport) GetTeamSummaries() []*TeamSummary { 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 *AttributionReportSummary) Reset() { + *x = AttributionReportSummary{} + mi := &file_attribution_v1_attribution_proto_msgTypes[8] + 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[8] + 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{8} +} + +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 +} + type GenerateReportRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Query *AttributionQuery `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` @@ -893,7 +977,7 @@ type GenerateReportRequest struct { func (x *GenerateReportRequest) Reset() { *x = GenerateReportRequest{} - mi := &file_attribution_v1_attribution_proto_msgTypes[8] + mi := &file_attribution_v1_attribution_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -905,7 +989,7 @@ func (x *GenerateReportRequest) String() string { func (*GenerateReportRequest) ProtoMessage() {} func (x *GenerateReportRequest) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[8] + mi := &file_attribution_v1_attribution_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -918,7 +1002,7 @@ func (x *GenerateReportRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateReportRequest.ProtoReflect.Descriptor instead. func (*GenerateReportRequest) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{8} + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{9} } func (x *GenerateReportRequest) GetQuery() *AttributionQuery { @@ -937,7 +1021,7 @@ type GenerateReportResponse struct { func (x *GenerateReportResponse) Reset() { *x = GenerateReportResponse{} - mi := &file_attribution_v1_attribution_proto_msgTypes[9] + mi := &file_attribution_v1_attribution_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -949,7 +1033,7 @@ func (x *GenerateReportResponse) String() string { func (*GenerateReportResponse) ProtoMessage() {} func (x *GenerateReportResponse) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[9] + mi := &file_attribution_v1_attribution_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -962,7 +1046,7 @@ func (x *GenerateReportResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateReportResponse.ProtoReflect.Descriptor instead. func (*GenerateReportResponse) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{9} + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{10} } func (x *GenerateReportResponse) GetReport() *AttributionReport { @@ -981,7 +1065,7 @@ type GetReportRequest struct { func (x *GetReportRequest) Reset() { *x = GetReportRequest{} - mi := &file_attribution_v1_attribution_proto_msgTypes[10] + mi := &file_attribution_v1_attribution_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -993,7 +1077,7 @@ func (x *GetReportRequest) String() string { func (*GetReportRequest) ProtoMessage() {} func (x *GetReportRequest) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[10] + mi := &file_attribution_v1_attribution_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1006,7 +1090,7 @@ func (x *GetReportRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReportRequest.ProtoReflect.Descriptor instead. func (*GetReportRequest) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{10} + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{11} } func (x *GetReportRequest) GetReportId() string { @@ -1025,7 +1109,7 @@ type GetReportResponse struct { func (x *GetReportResponse) Reset() { *x = GetReportResponse{} - mi := &file_attribution_v1_attribution_proto_msgTypes[11] + mi := &file_attribution_v1_attribution_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1037,7 +1121,7 @@ func (x *GetReportResponse) String() string { func (*GetReportResponse) ProtoMessage() {} func (x *GetReportResponse) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[11] + mi := &file_attribution_v1_attribution_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1050,7 +1134,7 @@ func (x *GetReportResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReportResponse.ProtoReflect.Descriptor instead. func (*GetReportResponse) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{11} + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{12} } func (x *GetReportResponse) GetReport() *AttributionReport { @@ -1060,6 +1144,134 @@ func (x *GetReportResponse) GetReport() *AttributionReport { 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[13] + 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[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 ListReportsRequest.ProtoReflect.Descriptor instead. +func (*ListReportsRequest) Descriptor() ([]byte, []int) { + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{13} +} + +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[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 { + 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"` @@ -1070,7 +1282,7 @@ type ExportReportRequest struct { func (x *ExportReportRequest) Reset() { *x = ExportReportRequest{} - mi := &file_attribution_v1_attribution_proto_msgTypes[12] + mi := &file_attribution_v1_attribution_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1082,7 +1294,7 @@ func (x *ExportReportRequest) String() string { func (*ExportReportRequest) ProtoMessage() {} func (x *ExportReportRequest) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[12] + mi := &file_attribution_v1_attribution_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1095,7 +1307,7 @@ func (x *ExportReportRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportReportRequest.ProtoReflect.Descriptor instead. func (*ExportReportRequest) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{12} + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{15} } func (x *ExportReportRequest) GetQuery() *AttributionQuery { @@ -1123,7 +1335,7 @@ type ExportReportResponse struct { func (x *ExportReportResponse) Reset() { *x = ExportReportResponse{} - mi := &file_attribution_v1_attribution_proto_msgTypes[13] + mi := &file_attribution_v1_attribution_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1135,7 +1347,7 @@ func (x *ExportReportResponse) String() string { func (*ExportReportResponse) ProtoMessage() {} func (x *ExportReportResponse) ProtoReflect() protoreflect.Message { - mi := &file_attribution_v1_attribution_proto_msgTypes[13] + mi := &file_attribution_v1_attribution_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1148,7 +1360,7 @@ func (x *ExportReportResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportReportResponse.ProtoReflect.Descriptor instead. func (*ExportReportResponse) Descriptor() ([]byte, []int) { - return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{13} + return file_attribution_v1_attribution_proto_rawDescGZIP(), []int{16} } func (x *ExportReportResponse) GetContent() []byte { @@ -1254,7 +1466,17 @@ const file_attribution_v1_attribution_proto_rawDesc = "" + "\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\"O\n" + + "\x0eteam_summaries\x18\x06 \x03(\v2\x1b.attribution.v1.TeamSummaryR\rteamSummaries\"\x80\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" + + "\fgenerated_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\vgeneratedAt\x12\x1d\n" + + "\n" + + "deal_count\x18\x04 \x01(\x05R\tdealCount\x12\x1f\n" + + "\vagent_count\x18\x05 \x01(\x05R\n" + + "agentCount\x12\x1d\n" + + "\n" + + "team_count\x18\x06 \x01(\x05R\tteamCount\"O\n" + "\x15GenerateReportRequest\x126\n" + "\x05query\x18\x01 \x01(\v2 .attribution.v1.AttributionQueryR\x05query\"S\n" + "\x16GenerateReportResponse\x129\n" + @@ -1262,7 +1484,16 @@ const file_attribution_v1_attribution_proto_rawDesc = "" + "\x10GetReportRequest\x12\x1b\n" + "\treport_id\x18\x01 \x01(\tR\breportId\"N\n" + "\x11GetReportResponse\x129\n" + - "\x06report\x18\x01 \x01(\v2!.attribution.v1.AttributionReportR\x06report\"\x89\x01\n" + + "\x06report\x18\x01 \x01(\v2!.attribution.v1.AttributionReportR\x06report\"\xc6\x01\n" + + "\x12ListReportsRequest\x12'\n" + + "\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12!\n" + + "\fworkspace_id\x18\x02 \x01(\tR\vworkspaceId\x126\n" + + "\x05model\x18\x03 \x01(\x0e2 .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\x12B\n" + + "\areports\x18\x01 \x03(\v2(.attribution.v1.AttributionReportSummaryR\areports\x12\x19\n" + + "\bhas_more\x18\x02 \x01(\bR\ahasMore\"\x89\x01\n" + "\x13ExportReportRequest\x126\n" + "\x05query\x18\x01 \x01(\v2 .attribution.v1.AttributionQueryR\x05query\x12:\n" + "\x06format\x18\x02 \x01(\x0e2\".attribution.v1.ReportExportFormatR\x06format\"o\n" + @@ -1278,10 +1509,11 @@ 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\xa2\x02\n" + + "\x18REPORT_EXPORT_FORMAT_CSV\x10\x022\xfa\x02\n" + "\x12AttributionService\x12_\n" + "\x0eGenerateReport\x12%.attribution.v1.GenerateReportRequest\x1a&.attribution.v1.GenerateReportResponse\x12P\n" + - "\tGetReport\x12 .attribution.v1.GetReportRequest\x1a!.attribution.v1.GetReportResponse\x12Y\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>Z attribution.v1.AttributionModel - 16, // 1: attribution.v1.AttributionQuery.start_time:type_name -> google.protobuf.Timestamp - 16, // 2: attribution.v1.AttributionQuery.end_time:type_name -> google.protobuf.Timestamp - 16, // 3: attribution.v1.DealContext.created_at:type_name -> google.protobuf.Timestamp - 16, // 4: attribution.v1.DealContext.updated_at:type_name -> google.protobuf.Timestamp - 17, // 5: attribution.v1.TraceTouchpoint.trace:type_name -> traces.v1.TraceSummary - 16, // 6: attribution.v1.UsageTouchpoint.observed_at:type_name -> google.protobuf.Timestamp + 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 - 16, // 13: attribution.v1.AttributionReport.generated_at:type_name -> google.protobuf.Timestamp + 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.GenerateReportRequest.query:type_name -> attribution.v1.AttributionQuery - 9, // 18: attribution.v1.GenerateReportResponse.report:type_name -> attribution.v1.AttributionReport - 9, // 19: attribution.v1.GetReportResponse.report:type_name -> attribution.v1.AttributionReport - 2, // 20: attribution.v1.ExportReportRequest.query:type_name -> attribution.v1.AttributionQuery - 1, // 21: attribution.v1.ExportReportRequest.format:type_name -> attribution.v1.ReportExportFormat - 10, // 22: attribution.v1.AttributionService.GenerateReport:input_type -> attribution.v1.GenerateReportRequest - 12, // 23: attribution.v1.AttributionService.GetReport:input_type -> attribution.v1.GetReportRequest - 14, // 24: attribution.v1.AttributionService.ExportReport:input_type -> attribution.v1.ExportReportRequest - 11, // 25: attribution.v1.AttributionService.GenerateReport:output_type -> attribution.v1.GenerateReportResponse - 13, // 26: attribution.v1.AttributionService.GetReport:output_type -> attribution.v1.GetReportResponse - 15, // 27: attribution.v1.AttributionService.ExportReport:output_type -> attribution.v1.ExportReportResponse - 25, // [25:28] is the sub-list for method output_type - 22, // [22:25] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name + 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 } func init() { file_attribution_v1_attribution_proto_init() } @@ -1365,7 +1606,7 @@ func file_attribution_v1_attribution_proto_init() { 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: 14, + NumMessages: 17, 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 bc89357..f7c37f4 100644 --- a/gen/go/attribution/v1/attributionv1connect/attribution.connect.go +++ b/gen/go/attribution/v1/attributionv1connect/attribution.connect.go @@ -39,6 +39,9 @@ const ( // AttributionServiceGetReportProcedure is the fully-qualified name of the AttributionService's // GetReport RPC. AttributionServiceGetReportProcedure = "/attribution.v1.AttributionService/GetReport" + // AttributionServiceListReportsProcedure is the fully-qualified name of the AttributionService's + // ListReports RPC. + AttributionServiceListReportsProcedure = "/attribution.v1.AttributionService/ListReports" // AttributionServiceExportReportProcedure is the fully-qualified name of the AttributionService's // ExportReport RPC. AttributionServiceExportReportProcedure = "/attribution.v1.AttributionService/ExportReport" @@ -48,6 +51,7 @@ const ( type AttributionServiceClient 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) } @@ -74,6 +78,12 @@ func NewAttributionServiceClient(httpClient connect.HTTPClient, baseURL string, connect.WithSchema(attributionServiceMethods.ByName("GetReport")), connect.WithClientOptions(opts...), ), + listReports: connect.NewClient[v1.ListReportsRequest, v1.ListReportsResponse]( + httpClient, + baseURL+AttributionServiceListReportsProcedure, + connect.WithSchema(attributionServiceMethods.ByName("ListReports")), + connect.WithClientOptions(opts...), + ), exportReport: connect.NewClient[v1.ExportReportRequest, v1.ExportReportResponse]( httpClient, baseURL+AttributionServiceExportReportProcedure, @@ -87,6 +97,7 @@ func NewAttributionServiceClient(httpClient connect.HTTPClient, baseURL string, type attributionServiceClient struct { generateReport *connect.Client[v1.GenerateReportRequest, v1.GenerateReportResponse] getReport *connect.Client[v1.GetReportRequest, v1.GetReportResponse] + listReports *connect.Client[v1.ListReportsRequest, v1.ListReportsResponse] exportReport *connect.Client[v1.ExportReportRequest, v1.ExportReportResponse] } @@ -100,6 +111,11 @@ func (c *attributionServiceClient) GetReport(ctx context.Context, req *connect.R return c.getReport.CallUnary(ctx, req) } +// ListReports calls attribution.v1.AttributionService.ListReports. +func (c *attributionServiceClient) ListReports(ctx context.Context, req *connect.Request[v1.ListReportsRequest]) (*connect.Response[v1.ListReportsResponse], error) { + return c.listReports.CallUnary(ctx, req) +} + // ExportReport calls attribution.v1.AttributionService.ExportReport. func (c *attributionServiceClient) ExportReport(ctx context.Context, req *connect.Request[v1.ExportReportRequest]) (*connect.Response[v1.ExportReportResponse], error) { return c.exportReport.CallUnary(ctx, req) @@ -109,6 +125,7 @@ func (c *attributionServiceClient) ExportReport(ctx context.Context, req *connec 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) } @@ -131,6 +148,12 @@ func NewAttributionServiceHandler(svc AttributionServiceHandler, opts ...connect connect.WithSchema(attributionServiceMethods.ByName("GetReport")), connect.WithHandlerOptions(opts...), ) + attributionServiceListReportsHandler := connect.NewUnaryHandler( + AttributionServiceListReportsProcedure, + svc.ListReports, + connect.WithSchema(attributionServiceMethods.ByName("ListReports")), + connect.WithHandlerOptions(opts...), + ) attributionServiceExportReportHandler := connect.NewUnaryHandler( AttributionServiceExportReportProcedure, svc.ExportReport, @@ -143,6 +166,8 @@ func NewAttributionServiceHandler(svc AttributionServiceHandler, opts ...connect attributionServiceGenerateReportHandler.ServeHTTP(w, r) case AttributionServiceGetReportProcedure: attributionServiceGetReportHandler.ServeHTTP(w, r) + case AttributionServiceListReportsProcedure: + attributionServiceListReportsHandler.ServeHTTP(w, r) case AttributionServiceExportReportProcedure: attributionServiceExportReportHandler.ServeHTTP(w, r) default: @@ -162,6 +187,10 @@ func (UnimplementedAttributionServiceHandler) GetReport(context.Context, *connec return nil, connect.NewError(connect.CodeUnimplemented, errors.New("attribution.v1.AttributionService.GetReport is not implemented")) } +func (UnimplementedAttributionServiceHandler) ListReports(context.Context, *connect.Request[v1.ListReportsRequest]) (*connect.Response[v1.ListReportsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("attribution.v1.AttributionService.ListReports is not implemented")) +} + 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")) } diff --git a/gen/python/attribution/v1/attribution_pb2.py b/gen/python/attribution/v1/attribution_pb2.py index 276b645..f569354 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\"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\"\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\xa2\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\x12Y\n\x0c\x45xportReport\x12#.attribution.v1.ExportReportRequest\x1a$.attribution.v1.ExportReportResponseB>ZZ & { export const AttributionReportSchema: GenMessage = /*@__PURE__*/ messageDesc(file_attribution_v1_attribution, 7); +/** + * @generated from message attribution.v1.AttributionReportSummary + */ +export type AttributionReportSummary = Message<"attribution.v1.AttributionReportSummary"> & { + /** + * @generated from field: string id = 1; + */ + id: string; + + /** + * @generated from field: attribution.v1.AttributionQuery query = 2; + */ + query?: AttributionQuery; + + /** + * @generated from field: google.protobuf.Timestamp generated_at = 3; + */ + generatedAt?: Timestamp; + + /** + * @generated from field: int32 deal_count = 4; + */ + dealCount: number; + + /** + * @generated from field: int32 agent_count = 5; + */ + agentCount: number; + + /** + * @generated from field: int32 team_count = 6; + */ + teamCount: number; +}; + +/** + * Describes the message attribution.v1.AttributionReportSummary. + * Use `create(AttributionReportSummarySchema)` to create a new message. + */ +export const AttributionReportSummarySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 8); + /** * @generated from message attribution.v1.GenerateReportRequest */ @@ -422,7 +464,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, 8); + messageDesc(file_attribution_v1_attribution, 9); /** * @generated from message attribution.v1.GenerateReportResponse @@ -439,7 +481,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, 9); + messageDesc(file_attribution_v1_attribution, 10); /** * @generated from message attribution.v1.GetReportRequest @@ -456,7 +498,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, 10); + messageDesc(file_attribution_v1_attribution, 11); /** * @generated from message attribution.v1.GetReportResponse @@ -473,7 +515,66 @@ 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, 11); + messageDesc(file_attribution_v1_attribution, 12); + +/** + * @generated from message attribution.v1.ListReportsRequest + */ +export type ListReportsRequest = Message<"attribution.v1.ListReportsRequest"> & { + /** + * @generated from field: string organization_id = 1; + */ + organizationId: string; + + /** + * @generated from field: string workspace_id = 2; + */ + workspaceId: string; + + /** + * @generated from field: attribution.v1.AttributionModel model = 3; + */ + model: AttributionModel; + + /** + * @generated from field: int32 limit = 4; + */ + limit: number; + + /** + * @generated from field: int32 offset = 5; + */ + offset: number; +}; + +/** + * Describes the message attribution.v1.ListReportsRequest. + * Use `create(ListReportsRequestSchema)` to create a new message. + */ +export const ListReportsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 13); + +/** + * @generated from message attribution.v1.ListReportsResponse + */ +export type ListReportsResponse = Message<"attribution.v1.ListReportsResponse"> & { + /** + * @generated from field: repeated attribution.v1.AttributionReportSummary reports = 1; + */ + reports: AttributionReportSummary[]; + + /** + * @generated from field: bool has_more = 2; + */ + hasMore: boolean; +}; + +/** + * Describes the message attribution.v1.ListReportsResponse. + * Use `create(ListReportsResponseSchema)` to create a new message. + */ +export const ListReportsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_attribution_v1_attribution, 14); /** * @generated from message attribution.v1.ExportReportRequest @@ -495,7 +596,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, 12); + messageDesc(file_attribution_v1_attribution, 15); /** * @generated from message attribution.v1.ExportReportResponse @@ -522,7 +623,7 @@ 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, 13); + messageDesc(file_attribution_v1_attribution, 16); /** * @generated from enum attribution.v1.AttributionModel @@ -603,6 +704,14 @@ export const AttributionService: GenService<{ input: typeof GetReportRequestSchema; output: typeof GetReportResponseSchema; }, + /** + * @generated from rpc attribution.v1.AttributionService.ListReports + */ + listReports: { + methodKind: "unary"; + input: typeof ListReportsRequestSchema; + output: typeof ListReportsResponseSchema; + }, /** * @generated from rpc attribution.v1.AttributionService.ExportReport */ diff --git a/proto/attribution/v1/attribution.proto b/proto/attribution/v1/attribution.proto index 9299779..578d73d 100644 --- a/proto/attribution/v1/attribution.proto +++ b/proto/attribution/v1/attribution.proto @@ -11,6 +11,7 @@ import "traces/v1/traces.proto"; service AttributionService { rpc GenerateReport(GenerateReportRequest) returns (GenerateReportResponse); rpc GetReport(GetReportRequest) returns (GetReportResponse); + rpc ListReports(ListReportsRequest) returns (ListReportsResponse); rpc ExportReport(ExportReportRequest) returns (ExportReportResponse); } @@ -110,6 +111,15 @@ message AttributionReport { repeated TeamSummary team_summaries = 6; } +message AttributionReportSummary { + string id = 1; + AttributionQuery query = 2; + google.protobuf.Timestamp generated_at = 3; + int32 deal_count = 4; + int32 agent_count = 5; + int32 team_count = 6; +} + message GenerateReportRequest { AttributionQuery query = 1; } @@ -126,6 +136,19 @@ message GetReportResponse { AttributionReport report = 1; } +message ListReportsRequest { + string organization_id = 1; + string workspace_id = 2; + AttributionModel model = 3; + int32 limit = 4; + int32 offset = 5; +} + +message ListReportsResponse { + repeated AttributionReportSummary reports = 1; + bool has_more = 2; +} + message ExportReportRequest { AttributionQuery query = 1; ReportExportFormat format = 2;