acryl-datahub-cloud 0.3.13.3__py3-none-any.whl → 0.3.14__py3-none-any.whl

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.

Potentially problematic release.


This version of acryl-datahub-cloud might be problematic. Click here for more details.

Files changed (51) hide show
  1. acryl_datahub_cloud/_codegen_config.json +1 -1
  2. acryl_datahub_cloud/datahub_usage_reporting/excluded.py +94 -0
  3. acryl_datahub_cloud/datahub_usage_reporting/usage_feature_reporter.py +462 -34
  4. acryl_datahub_cloud/metadata/_urns/urn_defs.py +2034 -2034
  5. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/event/notification/settings/__init__.py +2 -0
  6. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/identity/__init__.py +6 -0
  7. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/metadata/search/features/__init__.py +2 -0
  8. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/platform/event/v1/__init__.py +4 -0
  9. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/settings/asset/__init__.py +19 -0
  10. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/settings/global/__init__.py +6 -0
  11. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/template/__init__.py +6 -0
  12. acryl_datahub_cloud/metadata/schema.avsc +24776 -24109
  13. acryl_datahub_cloud/metadata/schema_classes.py +1581 -696
  14. acryl_datahub_cloud/metadata/schemas/ActionRequestInfo.avsc +95 -0
  15. acryl_datahub_cloud/metadata/schemas/AssertionAnalyticsRunEvent.avsc +0 -21
  16. acryl_datahub_cloud/metadata/schemas/AssetSettings.avsc +63 -0
  17. acryl_datahub_cloud/metadata/schemas/ChartInfo.avsc +2 -1
  18. acryl_datahub_cloud/metadata/schemas/CorpGroupSettings.avsc +127 -2
  19. acryl_datahub_cloud/metadata/schemas/CorpUserInvitationStatus.avsc +106 -0
  20. acryl_datahub_cloud/metadata/schemas/CorpUserKey.avsc +2 -0
  21. acryl_datahub_cloud/metadata/schemas/CorpUserSettings.avsc +127 -2
  22. acryl_datahub_cloud/metadata/schemas/CorpUserUsageFeatures.avsc +93 -0
  23. acryl_datahub_cloud/metadata/schemas/DataHubPageModuleProperties.avsc +21 -2
  24. acryl_datahub_cloud/metadata/schemas/DataHubPageTemplateProperties.avsc +77 -1
  25. acryl_datahub_cloud/metadata/schemas/DataProductKey.avsc +1 -0
  26. acryl_datahub_cloud/metadata/schemas/DatasetUsageStatistics.avsc +8 -0
  27. acryl_datahub_cloud/metadata/schemas/DomainKey.avsc +1 -0
  28. acryl_datahub_cloud/metadata/schemas/GlobalSettingsInfo.avsc +82 -0
  29. acryl_datahub_cloud/metadata/schemas/GlossaryNodeKey.avsc +1 -0
  30. acryl_datahub_cloud/metadata/schemas/GlossaryTermKey.avsc +1 -0
  31. acryl_datahub_cloud/metadata/schemas/IncidentActivityEvent.avsc +3 -3
  32. acryl_datahub_cloud/metadata/schemas/IncidentInfo.avsc +3 -3
  33. acryl_datahub_cloud/metadata/schemas/InferredMetadata.avsc +69 -0
  34. acryl_datahub_cloud/metadata/schemas/InviteToken.avsc +26 -0
  35. acryl_datahub_cloud/metadata/schemas/LogicalParent.avsc +104 -100
  36. acryl_datahub_cloud/metadata/schemas/MetadataChangeEvent.avsc +98 -45
  37. acryl_datahub_cloud/metadata/schemas/MonitorSuiteInfo.avsc +127 -2
  38. acryl_datahub_cloud/metadata/schemas/NotificationRequest.avsc +79 -2
  39. acryl_datahub_cloud/metadata/schemas/Ownership.avsc +69 -0
  40. acryl_datahub_cloud/metadata/schemas/RelationshipChangeEvent.avsc +215 -0
  41. acryl_datahub_cloud/metadata/schemas/SchemaFieldKey.avsc +2 -0
  42. acryl_datahub_cloud/metadata/schemas/StructuredProperties.avsc +69 -0
  43. acryl_datahub_cloud/metadata/schemas/SubscriptionInfo.avsc +127 -2
  44. acryl_datahub_cloud/sdk/assertions_client.py +21 -7
  45. acryl_datahub_cloud/sdk/resolver_client.py +4 -1
  46. acryl_datahub_cloud/sdk/subscription_client.py +8 -3
  47. {acryl_datahub_cloud-0.3.13.3.dist-info → acryl_datahub_cloud-0.3.14.dist-info}/METADATA +44 -44
  48. {acryl_datahub_cloud-0.3.13.3.dist-info → acryl_datahub_cloud-0.3.14.dist-info}/RECORD +51 -45
  49. {acryl_datahub_cloud-0.3.13.3.dist-info → acryl_datahub_cloud-0.3.14.dist-info}/WHEEL +0 -0
  50. {acryl_datahub_cloud-0.3.13.3.dist-info → acryl_datahub_cloud-0.3.14.dist-info}/entry_points.txt +0 -0
  51. {acryl_datahub_cloud-0.3.13.3.dist-info → acryl_datahub_cloud-0.3.14.dist-info}/top_level.txt +0 -0
@@ -21,6 +21,7 @@
21
21
  "BROADCAST_NEW_ACTION_WORKFLOW_FORM_REQUEST": "Broadcast that a new action workflow form request has been created or needs review.",
22
22
  "BROADCAST_NEW_INCIDENT_UPDATE": "Updates the broadcasted incident if possible.",
23
23
  "CUSTOM": "Legacy template types to support backwards compatibility.",
24
+ "INVITATION": "User invitation notification template.",
24
25
  "OWNERSHIP_CHANGE": "Ownership change notification template."
25
26
  },
26
27
  "name": "NotificationTemplateType",
@@ -28,6 +29,7 @@
28
29
  "symbols": [
29
30
  "OWNERSHIP_CHANGE",
30
31
  "BROADCAST_ASSERTION_STATUS_CHANGE",
32
+ "INVITATION",
31
33
  "CUSTOM",
32
34
  "BROADCAST_NEW_INCIDENT",
33
35
  "BROADCAST_NEW_INCIDENT_UPDATE",
@@ -229,6 +231,75 @@
229
231
  "name": "source",
230
232
  "default": null,
231
233
  "doc": "Source information for the ownership"
234
+ },
235
+ {
236
+ "Searchable": {
237
+ "/actor": {
238
+ "fieldName": "ownerAttributionActors",
239
+ "fieldType": "URN",
240
+ "queryByDefault": false
241
+ },
242
+ "/source": {
243
+ "fieldName": "ownerAttributionSources",
244
+ "fieldType": "URN",
245
+ "queryByDefault": false
246
+ },
247
+ "/time": {
248
+ "fieldName": "ownerAttributionDates",
249
+ "fieldType": "DATETIME",
250
+ "queryByDefault": false
251
+ }
252
+ },
253
+ "type": [
254
+ "null",
255
+ {
256
+ "type": "record",
257
+ "name": "MetadataAttribution",
258
+ "namespace": "com.linkedin.pegasus2avro.common",
259
+ "fields": [
260
+ {
261
+ "type": "long",
262
+ "name": "time",
263
+ "doc": "When this metadata was updated."
264
+ },
265
+ {
266
+ "java": {
267
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
268
+ },
269
+ "type": "string",
270
+ "name": "actor",
271
+ "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\neither be a user (in case of UI edits) or the datahub system for automation.",
272
+ "Urn": "Urn"
273
+ },
274
+ {
275
+ "java": {
276
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
277
+ },
278
+ "type": [
279
+ "null",
280
+ "string"
281
+ ],
282
+ "name": "source",
283
+ "default": null,
284
+ "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn.",
285
+ "Urn": "Urn"
286
+ },
287
+ {
288
+ "type": {
289
+ "type": "map",
290
+ "values": "string"
291
+ },
292
+ "name": "sourceDetail",
293
+ "default": {},
294
+ "doc": "The details associated with why this metadata was applied. For example, this could include\nthe actual regex rule, sql statement, ingestion pipeline ID, etc.\nAlso can include flags like 'propagated'=true or 'inferred'=true."
295
+ }
296
+ ],
297
+ "doc": "Information about who, why, and how this metadata was applied"
298
+ }
299
+ ],
300
+ "name": "attribution",
301
+ "default": null,
302
+ "doc": "Information about who, why, and how this metadata was applied"
232
303
  }
233
304
  ],
234
305
  "doc": "Ownership information"
@@ -281,6 +352,8 @@
281
352
  "EMAIL": "A specific email address to send a notification to.",
282
353
  "SLACK_CHANNEL": "A slack channel to send a notification to.",
283
354
  "SLACK_DM": "A slack member to send a notification to.",
355
+ "TEAMS_CHANNEL": "A Microsoft Teams channel to send a notification to.",
356
+ "TEAMS_DM": "A Microsoft Teams member to send a notification to.",
284
357
  "USER": "Deprecated! A DataHub user (via urn.). Currently this is NOT USED and may be removed in future versions.\nRecipient type should correspond to the sink type, and the sink should understand how to handle the recipient type appropriately.\nInstead, typically notifications have specific recipients as Slack handles, slack channels, or email addresses."
285
358
  },
286
359
  "name": "NotificationRecipientType",
@@ -289,6 +362,8 @@
289
362
  "EMAIL",
290
363
  "SLACK_CHANNEL",
291
364
  "SLACK_DM",
365
+ "TEAMS_CHANNEL",
366
+ "TEAMS_DM",
292
367
  "CUSTOM",
293
368
  "USER"
294
369
  ],
@@ -382,13 +457,15 @@
382
457
  "type": "enum",
383
458
  "symbolDocs": {
384
459
  "EMAIL": "Email target type.",
385
- "SLACK": "Slack target type."
460
+ "SLACK": "Slack target type.",
461
+ "TEAMS": "Microsoft Teams target type."
386
462
  },
387
463
  "name": "NotificationSinkType",
388
464
  "namespace": "com.linkedin.pegasus2avro.event.notification",
389
465
  "symbols": [
390
466
  "SLACK",
391
- "EMAIL"
467
+ "EMAIL",
468
+ "TEAMS"
392
469
  ],
393
470
  "doc": "A type of sink / platform to send a notification to."
394
471
  },
@@ -167,6 +167,75 @@
167
167
  "name": "source",
168
168
  "default": null,
169
169
  "doc": "Source information for the ownership"
170
+ },
171
+ {
172
+ "Searchable": {
173
+ "/actor": {
174
+ "fieldName": "ownerAttributionActors",
175
+ "fieldType": "URN",
176
+ "queryByDefault": false
177
+ },
178
+ "/source": {
179
+ "fieldName": "ownerAttributionSources",
180
+ "fieldType": "URN",
181
+ "queryByDefault": false
182
+ },
183
+ "/time": {
184
+ "fieldName": "ownerAttributionDates",
185
+ "fieldType": "DATETIME",
186
+ "queryByDefault": false
187
+ }
188
+ },
189
+ "type": [
190
+ "null",
191
+ {
192
+ "type": "record",
193
+ "name": "MetadataAttribution",
194
+ "namespace": "com.linkedin.pegasus2avro.common",
195
+ "fields": [
196
+ {
197
+ "type": "long",
198
+ "name": "time",
199
+ "doc": "When this metadata was updated."
200
+ },
201
+ {
202
+ "java": {
203
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
204
+ },
205
+ "type": "string",
206
+ "name": "actor",
207
+ "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\neither be a user (in case of UI edits) or the datahub system for automation.",
208
+ "Urn": "Urn"
209
+ },
210
+ {
211
+ "java": {
212
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
213
+ },
214
+ "type": [
215
+ "null",
216
+ "string"
217
+ ],
218
+ "name": "source",
219
+ "default": null,
220
+ "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn.",
221
+ "Urn": "Urn"
222
+ },
223
+ {
224
+ "type": {
225
+ "type": "map",
226
+ "values": "string"
227
+ },
228
+ "name": "sourceDetail",
229
+ "default": {},
230
+ "doc": "The details associated with why this metadata was applied. For example, this could include\nthe actual regex rule, sql statement, ingestion pipeline ID, etc.\nAlso can include flags like 'propagated'=true or 'inferred'=true."
231
+ }
232
+ ],
233
+ "doc": "Information about who, why, and how this metadata was applied"
234
+ }
235
+ ],
236
+ "name": "attribution",
237
+ "default": null,
238
+ "doc": "Information about who, why, and how this metadata was applied"
170
239
  }
171
240
  ],
172
241
  "doc": "Ownership information"
@@ -0,0 +1,215 @@
1
+ {
2
+ "type": "record",
3
+ "Event": {
4
+ "name": "relationshipChangeEvent"
5
+ },
6
+ "name": "RelationshipChangeEvent",
7
+ "namespace": "com.linkedin.pegasus2avro.platform.event.v1",
8
+ "fields": [
9
+ {
10
+ "type": [
11
+ "null",
12
+ {
13
+ "type": "record",
14
+ "name": "KafkaAuditHeader",
15
+ "namespace": "com.linkedin.events",
16
+ "fields": [
17
+ {
18
+ "compliance": [
19
+ {
20
+ "policy": "EVENT_TIME"
21
+ }
22
+ ],
23
+ "type": "long",
24
+ "name": "time",
25
+ "doc": "The time at which the event was emitted into kafka."
26
+ },
27
+ {
28
+ "compliance": "NONE",
29
+ "type": "string",
30
+ "name": "server",
31
+ "doc": "The fully qualified name of the host from which the event is being emitted."
32
+ },
33
+ {
34
+ "compliance": "NONE",
35
+ "type": [
36
+ "null",
37
+ "string"
38
+ ],
39
+ "name": "instance",
40
+ "default": null,
41
+ "doc": "The instance on the server from which the event is being emitted. e.g. i001"
42
+ },
43
+ {
44
+ "compliance": "NONE",
45
+ "type": "string",
46
+ "name": "appName",
47
+ "doc": "The name of the application from which the event is being emitted. see go/appname"
48
+ },
49
+ {
50
+ "compliance": "NONE",
51
+ "type": {
52
+ "type": "fixed",
53
+ "name": "UUID",
54
+ "namespace": "com.linkedin.events",
55
+ "size": 16
56
+ },
57
+ "name": "messageId",
58
+ "doc": "A unique identifier for the message"
59
+ },
60
+ {
61
+ "compliance": "NONE",
62
+ "type": [
63
+ "null",
64
+ "int"
65
+ ],
66
+ "name": "auditVersion",
67
+ "default": null,
68
+ "doc": "The version that is being used for auditing. In version 0, the audit trail buckets events into 10 minute audit windows based on the EventHeader timestamp. In version 1, the audit trail buckets events as follows: if the schema has an outer KafkaAuditHeader, use the outer audit header timestamp for bucketing; else if the EventHeader has an inner KafkaAuditHeader use that inner audit header's timestamp for bucketing"
69
+ },
70
+ {
71
+ "compliance": "NONE",
72
+ "type": [
73
+ "null",
74
+ "string"
75
+ ],
76
+ "name": "fabricUrn",
77
+ "default": null,
78
+ "doc": "The fabricUrn of the host from which the event is being emitted. Fabric Urn in the format of urn:li:fabric:{fabric_name}. See go/fabric."
79
+ },
80
+ {
81
+ "compliance": "NONE",
82
+ "type": [
83
+ "null",
84
+ "string"
85
+ ],
86
+ "name": "clusterConnectionString",
87
+ "default": null,
88
+ "doc": "This is a String that the client uses to establish some kind of connection with the Kafka cluster. The exact format of it depends on specific versions of clients and brokers. This information could potentially identify the fabric and cluster with which the client is producing to or consuming from."
89
+ }
90
+ ],
91
+ "doc": "This header records information about the context of an event as it is emitted into kafka and is intended to be used by the kafka audit application. For more information see go/kafkaauditheader"
92
+ }
93
+ ],
94
+ "name": "auditHeader",
95
+ "default": null,
96
+ "doc": "Kafka audit header containing metadata about the message itself.\nIncludes information like message ID, timestamp, and server details."
97
+ },
98
+ {
99
+ "java": {
100
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
101
+ },
102
+ "type": "string",
103
+ "name": "sourceUrn",
104
+ "doc": "The URN (Uniform Resource Name) of the source entity in the relationship.\nIn a downstream relationship example, this would be the URN of the upstream dataset.",
105
+ "Urn": "Urn"
106
+ },
107
+ {
108
+ "java": {
109
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
110
+ },
111
+ "type": "string",
112
+ "name": "destinationUrn",
113
+ "doc": "The URN of the destination entity in the relationship.\nIn a downstream relationship example, this would be the URN of the downstream dataset.",
114
+ "Urn": "Urn"
115
+ },
116
+ {
117
+ "type": {
118
+ "type": "enum",
119
+ "name": "RelationshipChangeOperation",
120
+ "namespace": "com.linkedin.pegasus2avro.platform.event.v1",
121
+ "symbols": [
122
+ "ADD",
123
+ "REMOVE",
124
+ "RESTATE"
125
+ ]
126
+ },
127
+ "name": "operation",
128
+ "doc": "The operation being performed on this relationship.\nTypically includes operations like ADD, REMOVE, or RESTATE."
129
+ },
130
+ {
131
+ "type": "string",
132
+ "name": "relationshipType",
133
+ "doc": "The type/category of relationship being established or modified.\nExamples: \"DownstreamOf\", \"Contains\", \"OwnedBy\", \"DerivedFrom\", etc."
134
+ },
135
+ {
136
+ "type": [
137
+ "null",
138
+ "string"
139
+ ],
140
+ "name": "lifecycleOwner",
141
+ "default": null,
142
+ "doc": "The system or service responsible for managing the lifecycle of this relationship.\nThis helps identify which component has authority over the relationship."
143
+ },
144
+ {
145
+ "type": [
146
+ "null",
147
+ "string"
148
+ ],
149
+ "name": "via",
150
+ "default": null,
151
+ "doc": "Information about how or through what means this relationship was established.\nCould indicate a specific pipeline, process, or tool that discovered/created the relationship."
152
+ },
153
+ {
154
+ "type": [
155
+ "null",
156
+ {
157
+ "type": "map",
158
+ "values": "string"
159
+ }
160
+ ],
161
+ "name": "properties",
162
+ "default": null,
163
+ "doc": "Additional custom properties associated with this relationship.\nAllows for flexible extension without changing the schema."
164
+ },
165
+ {
166
+ "type": {
167
+ "type": "record",
168
+ "name": "AuditStamp",
169
+ "namespace": "com.linkedin.pegasus2avro.common",
170
+ "fields": [
171
+ {
172
+ "type": "long",
173
+ "name": "time",
174
+ "doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."
175
+ },
176
+ {
177
+ "java": {
178
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
179
+ },
180
+ "type": "string",
181
+ "name": "actor",
182
+ "doc": "The entity (e.g. a member URN) which will be credited for moving the resource/association/sub-resource into the specific lifecycle stage. It is also the one used to authorize the change.",
183
+ "Urn": "Urn"
184
+ },
185
+ {
186
+ "java": {
187
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
188
+ },
189
+ "type": [
190
+ "null",
191
+ "string"
192
+ ],
193
+ "name": "impersonator",
194
+ "default": null,
195
+ "doc": "The entity (e.g. a service URN) which performs the change on behalf of the Actor and must be authorized to act as the Actor.",
196
+ "Urn": "Urn"
197
+ },
198
+ {
199
+ "type": [
200
+ "null",
201
+ "string"
202
+ ],
203
+ "name": "message",
204
+ "default": null,
205
+ "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."
206
+ }
207
+ ],
208
+ "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."
209
+ },
210
+ "name": "auditStamp",
211
+ "doc": "Stores information about who made this change and when.\nContains the actor (user or system) that performed the action and the timestamp."
212
+ }
213
+ ],
214
+ "doc": "Kafka event for proposing a relationship change between two entities.\nFor example, when dataset1 establishes a new downstream relationship with dataset2."
215
+ }
@@ -16,6 +16,8 @@
16
16
  "deprecation",
17
17
  "subTypes",
18
18
  "logicalParent",
19
+ "globalTags",
20
+ "glossaryTerms",
19
21
  "schemaFieldProfile",
20
22
  "lineageFeatures"
21
23
  ]
@@ -94,6 +94,75 @@
94
94
  "name": "lastModified",
95
95
  "default": null,
96
96
  "doc": "Audit stamp containing who last modified this relationship edge and when"
97
+ },
98
+ {
99
+ "Searchable": {
100
+ "/actor": {
101
+ "fieldName": "structuredPropertyAttributionActors",
102
+ "fieldType": "URN",
103
+ "queryByDefault": false
104
+ },
105
+ "/source": {
106
+ "fieldName": "structuredPropertyAttributionSources",
107
+ "fieldType": "URN",
108
+ "queryByDefault": false
109
+ },
110
+ "/time": {
111
+ "fieldName": "structuredPropertyAttributionDates",
112
+ "fieldType": "DATETIME",
113
+ "queryByDefault": false
114
+ }
115
+ },
116
+ "type": [
117
+ "null",
118
+ {
119
+ "type": "record",
120
+ "name": "MetadataAttribution",
121
+ "namespace": "com.linkedin.pegasus2avro.common",
122
+ "fields": [
123
+ {
124
+ "type": "long",
125
+ "name": "time",
126
+ "doc": "When this metadata was updated."
127
+ },
128
+ {
129
+ "java": {
130
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
131
+ },
132
+ "type": "string",
133
+ "name": "actor",
134
+ "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\neither be a user (in case of UI edits) or the datahub system for automation.",
135
+ "Urn": "Urn"
136
+ },
137
+ {
138
+ "java": {
139
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
140
+ },
141
+ "type": [
142
+ "null",
143
+ "string"
144
+ ],
145
+ "name": "source",
146
+ "default": null,
147
+ "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn.",
148
+ "Urn": "Urn"
149
+ },
150
+ {
151
+ "type": {
152
+ "type": "map",
153
+ "values": "string"
154
+ },
155
+ "name": "sourceDetail",
156
+ "default": {},
157
+ "doc": "The details associated with why this metadata was applied. For example, this could include\nthe actual regex rule, sql statement, ingestion pipeline ID, etc.\nAlso can include flags like 'propagated'=true or 'inferred'=true."
158
+ }
159
+ ],
160
+ "doc": "Information about who, why, and how this metadata was applied"
161
+ }
162
+ ],
163
+ "name": "attribution",
164
+ "default": null,
165
+ "doc": "Information about who, why, and how this metadata was applied"
97
166
  }
98
167
  ]
99
168
  }
@@ -263,13 +263,15 @@
263
263
  "type": "enum",
264
264
  "symbolDocs": {
265
265
  "EMAIL": "Email target type.",
266
- "SLACK": "Slack target type."
266
+ "SLACK": "Slack target type.",
267
+ "TEAMS": "Microsoft Teams target type."
267
268
  },
268
269
  "name": "NotificationSinkType",
269
270
  "namespace": "com.linkedin.pegasus2avro.event.notification",
270
271
  "symbols": [
271
272
  "SLACK",
272
- "EMAIL"
273
+ "EMAIL",
274
+ "TEAMS"
273
275
  ],
274
276
  "doc": "A type of sink / platform to send a notification to."
275
277
  }
@@ -335,6 +337,129 @@
335
337
  "default": null,
336
338
  "doc": "Email Notification Settings"
337
339
  },
340
+ {
341
+ "type": [
342
+ "null",
343
+ {
344
+ "type": "record",
345
+ "name": "TeamsNotificationSettings",
346
+ "namespace": "com.linkedin.pegasus2avro.event.notification.settings",
347
+ "fields": [
348
+ {
349
+ "type": [
350
+ "null",
351
+ {
352
+ "type": "record",
353
+ "name": "TeamsUser",
354
+ "namespace": "com.linkedin.pegasus2avro.settings.global",
355
+ "fields": [
356
+ {
357
+ "type": [
358
+ "null",
359
+ "string"
360
+ ],
361
+ "name": "teamsUserId",
362
+ "default": null,
363
+ "doc": "The Teams user ID (internal Teams identifier).\nThis is the primary identifier used for Teams messaging."
364
+ },
365
+ {
366
+ "Searchable": {
367
+ "fieldType": "KEYWORD",
368
+ "queryByDefault": false
369
+ },
370
+ "type": [
371
+ "null",
372
+ "string"
373
+ ],
374
+ "name": "azureUserId",
375
+ "default": null,
376
+ "doc": "The Azure AD user ID (Azure Active Directory object ID).\nThis is the primary identifier for Azure AD operations and Microsoft Graph API calls."
377
+ },
378
+ {
379
+ "type": [
380
+ "null",
381
+ "string"
382
+ ],
383
+ "name": "email",
384
+ "default": null,
385
+ "doc": "The user's email address (fallback identifier).\nUsed when other IDs are not available or for email-based user resolution."
386
+ },
387
+ {
388
+ "type": [
389
+ "null",
390
+ "string"
391
+ ],
392
+ "name": "displayName",
393
+ "default": null,
394
+ "doc": "The user's display name (cached value, may be stale).\nRetrieved from Microsoft Graph API and cached for performance."
395
+ },
396
+ {
397
+ "type": [
398
+ "null",
399
+ "long"
400
+ ],
401
+ "name": "lastUpdated",
402
+ "default": null,
403
+ "doc": "The timestamp when the cached display name was last updated.\nUsed for TTL-based cache invalidation (milliseconds since epoch)."
404
+ }
405
+ ],
406
+ "doc": "Teams user information with cached display name and multiple ID support.\nFollows the same caching pattern as TeamsChannel for consistency."
407
+ }
408
+ ],
409
+ "name": "user",
410
+ "default": null,
411
+ "doc": "Optional structured user information with cached metadata.\nSupports both Azure AD user ID and Teams user ID with cached display name."
412
+ },
413
+ {
414
+ "type": [
415
+ "null",
416
+ {
417
+ "type": "array",
418
+ "items": {
419
+ "type": "record",
420
+ "name": "TeamsChannel",
421
+ "namespace": "com.linkedin.pegasus2avro.settings.global",
422
+ "fields": [
423
+ {
424
+ "type": "string",
425
+ "name": "id",
426
+ "doc": "The Teams channel ID (internal Teams identifier)."
427
+ },
428
+ {
429
+ "type": [
430
+ "null",
431
+ "string"
432
+ ],
433
+ "name": "name",
434
+ "default": null,
435
+ "doc": "The Teams channel display name (cached value, may be stale)."
436
+ },
437
+ {
438
+ "type": [
439
+ "null",
440
+ "long"
441
+ ],
442
+ "name": "lastUpdated",
443
+ "default": null,
444
+ "doc": "The timestamp when the cached name was last updated.\nUsed for TTL-based cache invalidation."
445
+ }
446
+ ],
447
+ "doc": "Teams channel information with cached display name."
448
+ }
449
+ }
450
+ ],
451
+ "name": "channels",
452
+ "default": null,
453
+ "doc": "Optional list of structured channels with cached metadata"
454
+ }
455
+ ],
456
+ "doc": "Microsoft Teams Notification settings for an actor."
457
+ }
458
+ ],
459
+ "name": "teamsSettings",
460
+ "default": null,
461
+ "doc": "Microsoft Teams Notification Settings"
462
+ },
338
463
  {
339
464
  "type": [
340
465
  "null",