@bigfootai/bigfoot-types 4.6.18 → 4.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/metadata/tables/case.js +139 -0
- package/metadata/tables/case.ts +145 -0
- package/metadata/tables/issue.js +149 -0
- package/metadata/tables/issue.ts +155 -0
- package/metadata/tables/opportunity.js +153 -0
- package/metadata/tables/opportunity.ts +159 -0
- package/model.js +50 -30
- package/model.ts +73 -39
- package/package.json +1 -1
- package/metadata/tables/account.json +0 -231
- package/metadata/tables/contact.json +0 -95
- package/metadata/tables/event.json +0 -79
- package/metadata/tables/issue.json +0 -127
- package/metadata/tables/opportunity.json +0 -121
@@ -0,0 +1,153 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.Opportunity = void 0;
|
4
|
+
const model_1 = require("../../model");
|
5
|
+
exports.Opportunity = {
|
6
|
+
_id: '',
|
7
|
+
dateCreated: 0,
|
8
|
+
dateUpdated: 0,
|
9
|
+
label: 'Opportunity',
|
10
|
+
description: 'Represents an opportunity, which is a sale or pending deal.',
|
11
|
+
recordType: 'opportunity',
|
12
|
+
references: [
|
13
|
+
'https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_opportunity.htm',
|
14
|
+
],
|
15
|
+
fields: [
|
16
|
+
{
|
17
|
+
label: 'Name',
|
18
|
+
name: 'Name',
|
19
|
+
description: 'A name for this opportunity.',
|
20
|
+
fieldType: model_1.FieldType.Text,
|
21
|
+
maximumCharacters: 120,
|
22
|
+
readOnly: false,
|
23
|
+
important: true,
|
24
|
+
status: false,
|
25
|
+
},
|
26
|
+
{
|
27
|
+
label: 'Account',
|
28
|
+
name: 'Account.Name',
|
29
|
+
description: 'Name of the account associated with this opportunity.',
|
30
|
+
fieldType: model_1.FieldType.Text,
|
31
|
+
readOnly: false,
|
32
|
+
important: true,
|
33
|
+
status: false,
|
34
|
+
},
|
35
|
+
{
|
36
|
+
label: 'Amount',
|
37
|
+
name: 'Amount',
|
38
|
+
description: 'Estimated total sale amount.',
|
39
|
+
fieldType: model_1.FieldType.Text,
|
40
|
+
fieldVariation: model_1.FieldVariation.Currency,
|
41
|
+
readOnly: false,
|
42
|
+
important: true,
|
43
|
+
status: false,
|
44
|
+
},
|
45
|
+
{
|
46
|
+
label: 'Close Date',
|
47
|
+
name: 'CloseDate',
|
48
|
+
description: 'Date when the opportunity is expected to close.',
|
49
|
+
fieldType: model_1.FieldType.Text,
|
50
|
+
fieldVariation: model_1.FieldVariation.Date,
|
51
|
+
readOnly: false,
|
52
|
+
important: true,
|
53
|
+
status: false,
|
54
|
+
},
|
55
|
+
{
|
56
|
+
label: 'Stage',
|
57
|
+
name: 'StageName',
|
58
|
+
description: 'Current stage of this opportunity.',
|
59
|
+
fieldType: model_1.FieldType.Select,
|
60
|
+
readOnly: false,
|
61
|
+
options: [
|
62
|
+
{
|
63
|
+
label: 'Prospecting',
|
64
|
+
value: 'Prospecting',
|
65
|
+
status: model_1.TaskStatus.NotStarted,
|
66
|
+
},
|
67
|
+
{
|
68
|
+
label: 'Qualification',
|
69
|
+
value: 'Qualification',
|
70
|
+
status: model_1.TaskStatus.InProgress,
|
71
|
+
},
|
72
|
+
{
|
73
|
+
label: 'Needs Analysis',
|
74
|
+
value: 'Needs Analysis',
|
75
|
+
status: model_1.TaskStatus.InProgress,
|
76
|
+
},
|
77
|
+
{
|
78
|
+
label: 'Value Proposition',
|
79
|
+
value: 'Value Proposition',
|
80
|
+
status: model_1.TaskStatus.InProgress,
|
81
|
+
},
|
82
|
+
{
|
83
|
+
label: 'Id. Decision Makers',
|
84
|
+
value: 'Id. Decision Makers',
|
85
|
+
status: model_1.TaskStatus.InProgress,
|
86
|
+
},
|
87
|
+
{
|
88
|
+
label: 'Perception Analysis',
|
89
|
+
value: 'Perception Analysis',
|
90
|
+
status: model_1.TaskStatus.InProgress,
|
91
|
+
},
|
92
|
+
{
|
93
|
+
label: 'Proposal/Price Quote',
|
94
|
+
value: 'Proposal/Price Quote',
|
95
|
+
status: model_1.TaskStatus.InProgress,
|
96
|
+
},
|
97
|
+
{
|
98
|
+
label: 'Negotiation/Review',
|
99
|
+
value: 'Negotiation/Review',
|
100
|
+
status: model_1.TaskStatus.InProgress,
|
101
|
+
},
|
102
|
+
{
|
103
|
+
label: 'Closed Won',
|
104
|
+
value: 'Closed Won',
|
105
|
+
status: model_1.TaskStatus.Completed,
|
106
|
+
},
|
107
|
+
{
|
108
|
+
label: 'Closed Lost',
|
109
|
+
value: 'Closed Lost',
|
110
|
+
status: model_1.TaskStatus.Completed,
|
111
|
+
},
|
112
|
+
],
|
113
|
+
important: true,
|
114
|
+
status: true,
|
115
|
+
},
|
116
|
+
{
|
117
|
+
label: 'Owner',
|
118
|
+
name: 'Owner.Name',
|
119
|
+
description: 'Name of the User who has been assigned to work on this opportunity.',
|
120
|
+
fieldType: model_1.FieldType.Text,
|
121
|
+
readOnly: false,
|
122
|
+
important: true,
|
123
|
+
status: false,
|
124
|
+
},
|
125
|
+
{
|
126
|
+
label: 'Next Step',
|
127
|
+
name: 'NextStep',
|
128
|
+
description: 'A short description of next task in closing opportunity.',
|
129
|
+
fieldType: model_1.FieldType.Text,
|
130
|
+
maximumCharacters: 250,
|
131
|
+
readOnly: false,
|
132
|
+
important: true,
|
133
|
+
status: false,
|
134
|
+
},
|
135
|
+
{
|
136
|
+
label: 'Description',
|
137
|
+
name: 'Description',
|
138
|
+
description: 'Text description of the opportunity.',
|
139
|
+
fieldType: model_1.FieldType.Text,
|
140
|
+
fieldVariation: model_1.FieldVariation.Multi,
|
141
|
+
maximumCharacters: 32000,
|
142
|
+
readOnly: false,
|
143
|
+
important: false,
|
144
|
+
status: false,
|
145
|
+
},
|
146
|
+
],
|
147
|
+
classifiers: [
|
148
|
+
'interested in purchasing',
|
149
|
+
'new opportunity',
|
150
|
+
'interested in moving forward',
|
151
|
+
'followup with sales',
|
152
|
+
],
|
153
|
+
};
|
@@ -0,0 +1,159 @@
|
|
1
|
+
import {
|
2
|
+
FieldType,
|
3
|
+
FieldVariation,
|
4
|
+
TableMetadata,
|
5
|
+
TaskStatus,
|
6
|
+
} from '../../model';
|
7
|
+
|
8
|
+
export const Opportunity: TableMetadata = {
|
9
|
+
_id: '',
|
10
|
+
dateCreated: 0,
|
11
|
+
dateUpdated: 0,
|
12
|
+
label: 'Opportunity',
|
13
|
+
description: 'Represents an opportunity, which is a sale or pending deal.',
|
14
|
+
recordType: 'opportunity',
|
15
|
+
references: [
|
16
|
+
'https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_opportunity.htm',
|
17
|
+
],
|
18
|
+
fields: [
|
19
|
+
{
|
20
|
+
label: 'Name',
|
21
|
+
name: 'Name',
|
22
|
+
description: 'A name for this opportunity.',
|
23
|
+
fieldType: FieldType.Text,
|
24
|
+
maximumCharacters: 120,
|
25
|
+
readOnly: false,
|
26
|
+
important: true,
|
27
|
+
status: false,
|
28
|
+
},
|
29
|
+
{
|
30
|
+
label: 'Account',
|
31
|
+
name: 'Account.Name',
|
32
|
+
description:
|
33
|
+
'Name of the account associated with this opportunity.',
|
34
|
+
fieldType: FieldType.Text,
|
35
|
+
readOnly: false,
|
36
|
+
important: true,
|
37
|
+
status: false,
|
38
|
+
},
|
39
|
+
{
|
40
|
+
label: 'Amount',
|
41
|
+
name: 'Amount',
|
42
|
+
description: 'Estimated total sale amount.',
|
43
|
+
fieldType: FieldType.Text,
|
44
|
+
fieldVariation: FieldVariation.Currency,
|
45
|
+
readOnly: false,
|
46
|
+
important: true,
|
47
|
+
status: false,
|
48
|
+
},
|
49
|
+
{
|
50
|
+
label: 'Close Date',
|
51
|
+
name: 'CloseDate',
|
52
|
+
description: 'Date when the opportunity is expected to close.',
|
53
|
+
fieldType: FieldType.Text,
|
54
|
+
fieldVariation: FieldVariation.Date,
|
55
|
+
readOnly: false,
|
56
|
+
important: true,
|
57
|
+
status: false,
|
58
|
+
},
|
59
|
+
{
|
60
|
+
label: 'Stage',
|
61
|
+
name: 'StageName',
|
62
|
+
description: 'Current stage of this opportunity.',
|
63
|
+
fieldType: FieldType.Select,
|
64
|
+
readOnly: false,
|
65
|
+
options: [
|
66
|
+
{
|
67
|
+
label: 'Prospecting',
|
68
|
+
value: 'Prospecting',
|
69
|
+
status: TaskStatus.NotStarted,
|
70
|
+
},
|
71
|
+
{
|
72
|
+
label: 'Qualification',
|
73
|
+
value: 'Qualification',
|
74
|
+
status: TaskStatus.InProgress,
|
75
|
+
},
|
76
|
+
{
|
77
|
+
label: 'Needs Analysis',
|
78
|
+
value: 'Needs Analysis',
|
79
|
+
status: TaskStatus.InProgress,
|
80
|
+
},
|
81
|
+
{
|
82
|
+
label: 'Value Proposition',
|
83
|
+
value: 'Value Proposition',
|
84
|
+
status: TaskStatus.InProgress,
|
85
|
+
},
|
86
|
+
{
|
87
|
+
label: 'Id. Decision Makers',
|
88
|
+
value: 'Id. Decision Makers',
|
89
|
+
status: TaskStatus.InProgress,
|
90
|
+
},
|
91
|
+
{
|
92
|
+
label: 'Perception Analysis',
|
93
|
+
value: 'Perception Analysis',
|
94
|
+
status: TaskStatus.InProgress,
|
95
|
+
},
|
96
|
+
{
|
97
|
+
label: 'Proposal/Price Quote',
|
98
|
+
value: 'Proposal/Price Quote',
|
99
|
+
status: TaskStatus.InProgress,
|
100
|
+
},
|
101
|
+
{
|
102
|
+
label: 'Negotiation/Review',
|
103
|
+
value: 'Negotiation/Review',
|
104
|
+
status: TaskStatus.InProgress,
|
105
|
+
},
|
106
|
+
{
|
107
|
+
label: 'Closed Won',
|
108
|
+
value: 'Closed Won',
|
109
|
+
status: TaskStatus.Completed,
|
110
|
+
},
|
111
|
+
{
|
112
|
+
label: 'Closed Lost',
|
113
|
+
value: 'Closed Lost',
|
114
|
+
status: TaskStatus.Completed,
|
115
|
+
},
|
116
|
+
],
|
117
|
+
important: true,
|
118
|
+
status: true,
|
119
|
+
},
|
120
|
+
{
|
121
|
+
label: 'Owner',
|
122
|
+
name: 'Owner.Name',
|
123
|
+
description:
|
124
|
+
'Name of the User who has been assigned to work on this opportunity.',
|
125
|
+
fieldType: FieldType.Text,
|
126
|
+
readOnly: false,
|
127
|
+
important: true,
|
128
|
+
status: false,
|
129
|
+
},
|
130
|
+
{
|
131
|
+
label: 'Next Step',
|
132
|
+
name: 'NextStep',
|
133
|
+
description:
|
134
|
+
'A short description of next task in closing opportunity.',
|
135
|
+
fieldType: FieldType.Text,
|
136
|
+
maximumCharacters: 250,
|
137
|
+
readOnly: false,
|
138
|
+
important: true,
|
139
|
+
status: false,
|
140
|
+
},
|
141
|
+
{
|
142
|
+
label: 'Description',
|
143
|
+
name: 'Description',
|
144
|
+
description: 'Text description of the opportunity.',
|
145
|
+
fieldType: FieldType.Text,
|
146
|
+
fieldVariation: FieldVariation.Multi,
|
147
|
+
maximumCharacters: 32000,
|
148
|
+
readOnly: false,
|
149
|
+
important: false,
|
150
|
+
status: false,
|
151
|
+
},
|
152
|
+
],
|
153
|
+
classifiers: [
|
154
|
+
'interested in purchasing',
|
155
|
+
'new opportunity',
|
156
|
+
'interested in moving forward',
|
157
|
+
'followup with sales',
|
158
|
+
],
|
159
|
+
};
|
package/model.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
4
|
-
exports.
|
5
|
-
exports.
|
6
|
-
exports.GraphQLTypes = exports.SearchInputQL = exports.SearchTagsInputQL = exports.ArchiveSearchOutputQL = exports.ArchiveSearchInputQL = exports.FindSearchesInputQL = exports.FindSearchInputQL = exports.UpsertSearchInputQL = exports.ArchiveFolderOutputQL = exports.ArchiveFolderInputQL = exports.FindFoldersInputQL = exports.FindFolderInputQL = exports.UpsertFolderInputQL = exports.ArchiveTaskOutputQL = exports.ArchiveTaskInputQL = exports.FindTasksInputQL = exports.FindTaskInputQL = exports.UpdateTaskInputQL = exports.DeleteSharingTagInputQL = exports.SetSharingTagInputQL = exports.MergeTagInputQL = exports.ArchiveTagOutputQL = exports.ArchiveTagInputQL = exports.FindTagsInputQL = void 0;
|
3
|
+
exports.ReferenceBlockInputQL = exports.ConnectedProviderQL = exports.CredentialQL = exports.StandardObjectsQL = exports.ProviderResponseQL = exports.ProviderRequestQL = exports.ProviderInfoQL = exports.DateEntityEntryQL = exports.EntityEntryQL = exports.EntityEntryFields = exports.RelationEntryQL = exports.ArgumentEntryQL = exports.EntityReferenceQL = exports.DocumentSentimentQL = exports.TaskStepQL = exports.TaskStepInputQL = exports.ReactionQL = exports.ReactionSkinToneQL = exports.BusinessObjectLinkQL = exports.BusinessObjectLinkInputQL = exports.SharingTenantQL = exports.SharingDomainQL = exports.SharingTagQL = exports.SharingTagInputQL = exports.InviteSharingTagInputQL = exports.EditorQL = exports.EditorInputQL = exports.HighlightQL = exports.RelationType = exports.EntityType = exports.RecordType = exports.ProcessingStage = exports.MutationType = exports.MarkType = exports.DocumentType = exports.RecurrenceRFC = exports.TagRecommendationVariation = exports.TagRecommendationType = exports.InviteStatus = exports.OrderByDirection = exports.SharingApproach = exports.StepStatus = exports.TaskStatus = exports.TaskPriority = exports.SharingLevel = exports.ClientType = exports.TagType = exports.UpsertType = exports.RecommendationType = exports.BlockType = void 0;
|
4
|
+
exports.Task = exports.TaskQL = exports.TaskFields = exports.Note = exports.NoteQL = exports.BusinessObject = exports.BusinessObjectQL = exports.BusinessObjectFields = exports.BusinessObjectIngestionRequest = exports.History = exports.BlockProcessingResponse = exports.BlockProcessingRequest = exports.Block = exports.BlockFields = exports.Article = exports.ArticleQL = exports.Person = exports.Organization = exports.Domain = exports.DomainQL = exports.Tenant = exports.TenantQL = exports.Recommendation = exports.UpsertRecommendationQL = exports.ConnectRecommendationQL = exports.TagRecommendationQL = exports.Tag = exports.TagQL = exports.TagFieldsJustSharing = exports.TagFieldsWithoutSharing = exports.Provider = exports.ProviderQL = exports.ProviderApplicationQL = exports.Sync = exports.SyncQL = exports.Search = exports.SearchQL = exports.Folder = exports.FolderQL = exports.Metadata = exports.MetadataFields = exports.SharedPrimitive = exports.SharedPrimitiveFields = exports.Primitive = exports.PrimitiveFields = exports.PersonReferenceQL = exports.PersonReferenceFields = exports.ChangesQL = exports.ChangesInputQL = exports.ReferenceBlockQL = void 0;
|
5
|
+
exports.UpsertTagInputQL = exports.SharingTenantInputQL = exports.SharingDomainInputQL = exports.FindSyncInputQL = exports.FindProviderInputQL = exports.ArchiveNoteOutputQL = exports.ArchiveNoteInputQL = exports.FindNotesInputQL = exports.FindNoteInputQL = exports.UpsertNoteInputQL = exports.FindEventInputQL = exports.FindCalendarInputQL = exports.FindArticlesInputQL = exports.FindArticleInputQL = exports.FindDomainInputQL = exports.FindTenantInputQL = exports.Table = exports.TableQL = exports.Record = exports.RecordQL = exports.TableMetadata = exports.TableMetadataQL = exports.FieldValueQL = exports.FieldQL = exports.OptionQL = exports.FieldVariation = exports.FieldType = exports.Template = exports.TemplateQL = exports.DocumentMetadata = exports.DocumentMetadataQL = exports.BlockDescriptionQL = exports.Website = exports.WebsiteQL = exports.Document = exports.DocumentQL = exports.Thread = exports.Todo = exports.Calendar = exports.CalendarQL = exports.Event = exports.EventQL = exports.PersonAcceptanceQL = exports.ResponseStatus = exports.EventStatus = exports.Conference = exports.ConferenceQL = exports.ConferenceEntrypointQL = exports.TranscriptionQL = exports.TranscriptionEntryQL = void 0;
|
6
|
+
exports.GraphQLTypes = exports.SearchInputQL = exports.SearchTagsInputQL = exports.ArchiveSearchOutputQL = exports.ArchiveSearchInputQL = exports.FindSearchesInputQL = exports.FindSearchInputQL = exports.UpsertSearchInputQL = exports.ArchiveFolderOutputQL = exports.ArchiveFolderInputQL = exports.FindFoldersInputQL = exports.FindFolderInputQL = exports.UpsertFolderInputQL = exports.ArchiveTaskOutputQL = exports.ArchiveTaskInputQL = exports.FindTasksInputQL = exports.FindTaskInputQL = exports.UpdateTaskInputQL = exports.DeleteSharingTagInputQL = exports.SetSharingTagInputQL = exports.MergeTagInputQL = exports.ArchiveTagOutputQL = exports.ArchiveTagInputQL = exports.FindTagsInputQL = exports.FindTagInputQL = void 0;
|
7
7
|
const uuid_1 = require("uuid");
|
8
8
|
/*
|
9
9
|
These are the core primitives of our model. These represent the entities that show
|
@@ -27,13 +27,16 @@ var BlockType;
|
|
27
27
|
BlockType["Template"] = "template";
|
28
28
|
BlockType["Table"] = "table";
|
29
29
|
})(BlockType || (exports.BlockType = BlockType = {}));
|
30
|
-
var
|
31
|
-
(function (
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
30
|
+
var RecommendationType;
|
31
|
+
(function (RecommendationType) {
|
32
|
+
RecommendationType["Connect"] = "connect";
|
33
|
+
RecommendationType["Upsert"] = "upsert";
|
34
|
+
})(RecommendationType || (exports.RecommendationType = RecommendationType = {}));
|
35
|
+
var UpsertType;
|
36
|
+
(function (UpsertType) {
|
37
|
+
UpsertType["Insert"] = "insert";
|
38
|
+
UpsertType["Update"] = "update";
|
39
|
+
})(UpsertType || (exports.UpsertType = UpsertType = {}));
|
37
40
|
var TagType;
|
38
41
|
(function (TagType) {
|
39
42
|
TagType["Person"] = "person";
|
@@ -611,14 +614,45 @@ type TagRecommendation {
|
|
611
614
|
entity: EntityEntry!
|
612
615
|
variation: String
|
613
616
|
}`;
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
+
// We make recommendations/notifications for a variety of reasons
|
618
|
+
// - Recommend integrating calendar based on dates in the note
|
619
|
+
// - Recommend integrating salesforce based on links in the note
|
620
|
+
// - Recommend creating an issue based on intelligence from the note
|
621
|
+
// - Recommend creating a healthcheck based on intelligence from the note
|
622
|
+
// - Recommend reading a note or task that has just been shared
|
623
|
+
// All of these should be available in the note context, but also continue
|
624
|
+
// to be available outside of the note context - and for certain things (like recommending an integration)
|
625
|
+
// should not repeat - equally - should be ignored if we say we don't want to do it and ideally not re-appear
|
626
|
+
// if the user x's it out. In addition, some recommendation/notifications are scoped to the user while others
|
627
|
+
// are global to anyone who can see it any should only be done once
|
628
|
+
exports.ConnectRecommendationQL = `
|
629
|
+
type ConnectRecommendation {
|
630
|
+
tagType: String
|
617
631
|
linkUrl: String
|
618
632
|
provider: Provider!
|
619
633
|
providerResponse: ProviderResponse
|
620
634
|
providerInfo: ProviderInfo!
|
621
635
|
}`;
|
636
|
+
exports.UpsertRecommendationQL = `
|
637
|
+
type UpsertRecommendation {
|
638
|
+
table: Table!
|
639
|
+
record: Record!
|
640
|
+
upsertType: String!
|
641
|
+
connectRecommendations: [ConnectRecommendation]
|
642
|
+
}`;
|
643
|
+
class Recommendation extends SharedPrimitive {
|
644
|
+
constructor(sharingTags, referenceBlock, tenantIdCreated, recommendationType) {
|
645
|
+
// For the sharing tags, we do it a little differently depending on the global nature of the recommendation. If theirs
|
646
|
+
// a recommendation for each tenant, the sharing tags should just include the tenant. Otherwise the sharing tags should
|
647
|
+
// copy that of the block at time of recommendation
|
648
|
+
super(sharingTags);
|
649
|
+
// These are applicable for all recommendations
|
650
|
+
this.referenceBlock = referenceBlock;
|
651
|
+
this.tenantIdCreated = tenantIdCreated;
|
652
|
+
this.recommendationType = recommendationType;
|
653
|
+
}
|
654
|
+
}
|
655
|
+
exports.Recommendation = Recommendation;
|
622
656
|
exports.TenantQL = `
|
623
657
|
type Tenant {${exports.PrimitiveFields}
|
624
658
|
domainMemberships: [String]!
|
@@ -675,7 +709,7 @@ type Article {${exports.PrimitiveFields}
|
|
675
709
|
businessObjects: [BusinessObjectLink]
|
676
710
|
sharingTags: [SharingTag]
|
677
711
|
tagRecommendations: [TagRecommendation]
|
678
|
-
|
712
|
+
connectRecommendations: [ConnectRecommendation]
|
679
713
|
relations: [RelationEntry]
|
680
714
|
archived: Boolean!
|
681
715
|
favorite: Boolean!
|
@@ -744,20 +778,6 @@ class History extends Primitive {
|
|
744
778
|
}
|
745
779
|
}
|
746
780
|
exports.History = History;
|
747
|
-
class Notification extends SharedPrimitive {
|
748
|
-
constructor(tenantIdCreated, sharingTags, notificationType) {
|
749
|
-
super(sharingTags);
|
750
|
-
this.notificationType = notificationType;
|
751
|
-
this.tenantIdCreated = tenantIdCreated;
|
752
|
-
}
|
753
|
-
}
|
754
|
-
exports.Notification = Notification;
|
755
|
-
class IngestionNotification extends Notification {
|
756
|
-
constructor(tenantIdCreated, sharingTags) {
|
757
|
-
super(tenantIdCreated, sharingTags, NotificationType.Ingestion);
|
758
|
-
}
|
759
|
-
}
|
760
|
-
exports.IngestionNotification = IngestionNotification;
|
761
781
|
class BusinessObjectIngestionRequest extends Primitive {
|
762
782
|
constructor(tenantIdCreated, originReferenceBlock, uri) {
|
763
783
|
super();
|
@@ -1415,7 +1435,7 @@ ${exports.ProviderApplicationQL}
|
|
1415
1435
|
${exports.ProviderQL}
|
1416
1436
|
${exports.TagQL}
|
1417
1437
|
${exports.TagRecommendationQL}
|
1418
|
-
${exports.
|
1438
|
+
${exports.ConnectRecommendationQL}
|
1419
1439
|
${exports.ConnectedProviderQL}
|
1420
1440
|
${exports.ReferenceBlockInputQL}
|
1421
1441
|
${exports.ReferenceBlockQL}
|
package/model.ts
CHANGED
@@ -22,11 +22,14 @@ export enum BlockType {
|
|
22
22
|
Table = 'table',
|
23
23
|
}
|
24
24
|
|
25
|
-
export enum
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
export enum RecommendationType {
|
26
|
+
Connect = 'connect',
|
27
|
+
Upsert = 'upsert',
|
28
|
+
}
|
29
|
+
|
30
|
+
export enum UpsertType {
|
31
|
+
Insert = 'insert',
|
32
|
+
Update = 'update',
|
30
33
|
}
|
31
34
|
|
32
35
|
export enum TagType {
|
@@ -795,6 +798,7 @@ type ProviderApplication {
|
|
795
798
|
sobjects: StandardObjects!
|
796
799
|
linkSubscriptions: [String]!
|
797
800
|
recordTypeSubscriptions: [String]!
|
801
|
+
authentication: Boolean!
|
798
802
|
}`;
|
799
803
|
export interface ProviderApplication {
|
800
804
|
name: string;
|
@@ -804,6 +808,7 @@ export interface ProviderApplication {
|
|
804
808
|
sobjects: StandardObjects;
|
805
809
|
linkSubscriptions: string[];
|
806
810
|
recordTypeSubscriptions: string[];
|
811
|
+
authentication: boolean;
|
807
812
|
}
|
808
813
|
|
809
814
|
export const ProviderQL = `
|
@@ -927,22 +932,72 @@ export interface TagRecommendation {
|
|
927
932
|
variation?: TagRecommendationVariation;
|
928
933
|
}
|
929
934
|
|
930
|
-
|
931
|
-
|
932
|
-
|
935
|
+
// We make recommendations/notifications for a variety of reasons
|
936
|
+
// - Recommend integrating calendar based on dates in the note
|
937
|
+
// - Recommend integrating salesforce based on links in the note
|
938
|
+
// - Recommend creating an issue based on intelligence from the note
|
939
|
+
// - Recommend creating a healthcheck based on intelligence from the note
|
940
|
+
// - Recommend reading a note or task that has just been shared
|
941
|
+
// All of these should be available in the note context, but also continue
|
942
|
+
// to be available outside of the note context - and for certain things (like recommending an integration)
|
943
|
+
// should not repeat - equally - should be ignored if we say we don't want to do it and ideally not re-appear
|
944
|
+
// if the user x's it out. In addition, some recommendation/notifications are scoped to the user while others
|
945
|
+
// are global to anyone who can see it any should only be done once
|
946
|
+
export const ConnectRecommendationQL = `
|
947
|
+
type ConnectRecommendation {
|
948
|
+
tagType: String
|
933
949
|
linkUrl: String
|
934
950
|
provider: Provider!
|
935
951
|
providerResponse: ProviderResponse
|
936
952
|
providerInfo: ProviderInfo!
|
937
953
|
}`;
|
938
|
-
export interface
|
939
|
-
|
940
|
-
linkUrl?: string;
|
954
|
+
export interface ConnectRecommendation {
|
955
|
+
tagType?: string; // The type of tag that triggered the connection recommendation
|
956
|
+
linkUrl?: string; // The link that triggered the recommendation
|
941
957
|
provider: Provider;
|
942
958
|
providerResponse?: ProviderResponse;
|
943
959
|
providerInfo: ProviderInfo;
|
944
960
|
}
|
945
961
|
|
962
|
+
export const UpsertRecommendationQL = `
|
963
|
+
type UpsertRecommendation {
|
964
|
+
table: Table!
|
965
|
+
record: Record!
|
966
|
+
upsertType: String!
|
967
|
+
connectRecommendations: [ConnectRecommendation]
|
968
|
+
}`;
|
969
|
+
export interface UpsertRecommendation {
|
970
|
+
table: Table;
|
971
|
+
record: Record;
|
972
|
+
upsertType: UpsertType;
|
973
|
+
connectRecommendations: ConnectRecommendation[]; // Lists out any recommended providers that could be used to perform the data update
|
974
|
+
}
|
975
|
+
|
976
|
+
export class Recommendation extends SharedPrimitive {
|
977
|
+
referenceBlock: ReferenceBlock; // This is the block that caused the recommendation to happen
|
978
|
+
tenantIdCreated: string;
|
979
|
+
recommendationType: RecommendationType;
|
980
|
+
connectRecommendation?: ConnectRecommendation; // For provider recommendations, we use this field
|
981
|
+
upsertRecommendation?: UpsertRecommendation; // For data upsert recommendations, we use this field
|
982
|
+
|
983
|
+
constructor(
|
984
|
+
sharingTags: SharingTag[],
|
985
|
+
referenceBlock: ReferenceBlock,
|
986
|
+
tenantIdCreated: string,
|
987
|
+
recommendationType: RecommendationType
|
988
|
+
) {
|
989
|
+
// For the sharing tags, we do it a little differently depending on the global nature of the recommendation. If theirs
|
990
|
+
// a recommendation for each tenant, the sharing tags should just include the tenant. Otherwise the sharing tags should
|
991
|
+
// copy that of the block at time of recommendation
|
992
|
+
super(sharingTags);
|
993
|
+
|
994
|
+
// These are applicable for all recommendations
|
995
|
+
this.referenceBlock = referenceBlock;
|
996
|
+
this.tenantIdCreated = tenantIdCreated;
|
997
|
+
this.recommendationType = recommendationType;
|
998
|
+
}
|
999
|
+
}
|
1000
|
+
|
946
1001
|
export const TenantQL = `
|
947
1002
|
type Tenant {${PrimitiveFields}
|
948
1003
|
domainMemberships: [String]!
|
@@ -951,6 +1006,7 @@ type Tenant {${PrimitiveFields}
|
|
951
1006
|
picture: String
|
952
1007
|
familyName: String
|
953
1008
|
givenName: String
|
1009
|
+
allowed: Boolean!
|
954
1010
|
}`;
|
955
1011
|
export class Tenant extends Primitive {
|
956
1012
|
domainMemberships: string[]; // The list of all domains this tenant belongs
|
@@ -963,6 +1019,7 @@ export class Tenant extends Primitive {
|
|
963
1019
|
givenName?: string;
|
964
1020
|
connectedProviders?: ConnectedProvider[];
|
965
1021
|
accessToken?: string;
|
1022
|
+
allowed: boolean; // Used to indicate if this user is allowed to access the application TODO take this out after private beta
|
966
1023
|
|
967
1024
|
constructor(
|
968
1025
|
domainMemberships: string[],
|
@@ -978,6 +1035,7 @@ export class Tenant extends Primitive {
|
|
978
1035
|
this.emailVerified = emailVerified;
|
979
1036
|
this.domainIdEmail = domainIdEmail;
|
980
1037
|
this.tagId = tagId;
|
1038
|
+
this.allowed = false;
|
981
1039
|
}
|
982
1040
|
}
|
983
1041
|
|
@@ -1021,7 +1079,7 @@ type Article {${PrimitiveFields}
|
|
1021
1079
|
businessObjects: [BusinessObjectLink]
|
1022
1080
|
sharingTags: [SharingTag]
|
1023
1081
|
tagRecommendations: [TagRecommendation]
|
1024
|
-
|
1082
|
+
connectRecommendations: [ConnectRecommendation]
|
1025
1083
|
relations: [RelationEntry]
|
1026
1084
|
archived: Boolean!
|
1027
1085
|
favorite: Boolean!
|
@@ -1045,11 +1103,11 @@ export class Article extends Primitive {
|
|
1045
1103
|
businessObjects?: BusinessObjectLink[];
|
1046
1104
|
sharingTags?: SharingTag[];
|
1047
1105
|
tagRecommendations?: TagRecommendation[];
|
1048
|
-
|
1106
|
+
connectRecommendations?: ConnectRecommendation[];
|
1049
1107
|
relations?: RelationEntry[];
|
1050
1108
|
archived: boolean;
|
1051
1109
|
favorite: boolean;
|
1052
|
-
snoozed
|
1110
|
+
snoozed: boolean;
|
1053
1111
|
status?: TaskStatus;
|
1054
1112
|
originNoteId?: string;
|
1055
1113
|
editorId?: string;
|
@@ -1169,30 +1227,6 @@ export class History extends Primitive {
|
|
1169
1227
|
}
|
1170
1228
|
}
|
1171
1229
|
|
1172
|
-
export class Notification extends SharedPrimitive {
|
1173
|
-
notificationType: NotificationType;
|
1174
|
-
referenceBlock?: ReferenceBlock;
|
1175
|
-
|
1176
|
-
constructor(
|
1177
|
-
tenantIdCreated: string,
|
1178
|
-
sharingTags: SharingTag[],
|
1179
|
-
notificationType: NotificationType
|
1180
|
-
) {
|
1181
|
-
super(sharingTags);
|
1182
|
-
|
1183
|
-
this.notificationType = notificationType;
|
1184
|
-
this.tenantIdCreated = tenantIdCreated;
|
1185
|
-
}
|
1186
|
-
}
|
1187
|
-
|
1188
|
-
export class IngestionNotification extends Notification {
|
1189
|
-
connectedProvider?: ConnectedProvider;
|
1190
|
-
|
1191
|
-
constructor(tenantIdCreated: string, sharingTags: SharingTag[]) {
|
1192
|
-
super(tenantIdCreated, sharingTags, NotificationType.Ingestion);
|
1193
|
-
}
|
1194
|
-
}
|
1195
|
-
|
1196
1230
|
export interface SubscribingProviderApplication {
|
1197
1231
|
provider: Provider;
|
1198
1232
|
application: ProviderApplication;
|
@@ -2557,7 +2591,7 @@ ${ProviderApplicationQL}
|
|
2557
2591
|
${ProviderQL}
|
2558
2592
|
${TagQL}
|
2559
2593
|
${TagRecommendationQL}
|
2560
|
-
${
|
2594
|
+
${ConnectRecommendationQL}
|
2561
2595
|
${ConnectedProviderQL}
|
2562
2596
|
${ReferenceBlockInputQL}
|
2563
2597
|
${ReferenceBlockQL}
|