Skip to main content

CorpGroup

CorpGroup represents an identity of a group of users in the enterprise.

Aspects

corpGroupKey

Key for a CorpGroup

Schema
{
"type": "record",
"Aspect": {
"name": "corpGroupKey"
},
"name": "CorpGroupKey",
"namespace": "com.linkedin.metadata.key",
"fields": [
{
"Searchable": {
"boostScore": 10.0,
"enableAutocomplete": true,
"fieldType": "TEXT_PARTIAL",
"queryByDefault": true
},
"type": "string",
"name": "name",
"doc": "The URL-encoded name of the AD/LDAP group. Serves as a globally unique identifier within DataHub."
}
],
"doc": "Key for a CorpGroup"
}

corpGroupInfo

Information about a Corp Group ingested from a third party source

Schema
{
"type": "record",
"Aspect": {
"EntityUrns": [
"com.linkedin.common.CorpGroupUrn"
],
"name": "corpGroupInfo"
},
"name": "CorpGroupInfo",
"namespace": "com.linkedin.identity",
"fields": [
{
"Searchable": {
"boostScore": 10.0,
"enableAutocomplete": true,
"fieldType": "TEXT_PARTIAL",
"queryByDefault": true
},
"type": [
"null",
"string"
],
"name": "displayName",
"default": null,
"doc": "The name of the group."
},
{
"type": [
"null",
"string"
],
"name": "email",
"default": null,
"doc": "email of this group"
},
{
"Relationship": {
"/*": {
"entityTypes": [
"corpuser"
],
"name": "OwnedBy"
}
},
"deprecated": true,
"type": {
"type": "array",
"items": "string"
},
"name": "admins",
"doc": "owners of this group\nDeprecated! Replaced by Ownership aspect."
},
{
"Relationship": {
"/*": {
"entityTypes": [
"corpuser"
],
"name": "IsPartOf"
}
},
"deprecated": true,
"type": {
"type": "array",
"items": "string"
},
"name": "members",
"doc": "List of ldap urn in this group.\nDeprecated! Replaced by GroupMembership aspect."
},
{
"Relationship": {
"/*": {
"entityTypes": [
"corpGroup"
],
"name": "IsPartOf"
}
},
"deprecated": true,
"type": {
"type": "array",
"items": "string"
},
"name": "groups",
"doc": "List of groups in this group.\nDeprecated! This field is unused."
},
{
"Searchable": {
"fieldType": "TEXT_PARTIAL"
},
"type": [
"null",
"string"
],
"name": "description",
"default": null,
"doc": "A description of the group."
},
{
"type": [
"null",
"string"
],
"name": "slack",
"default": null,
"doc": "Slack channel for the group"
},
{
"Searchable": {
"/time": {
"fieldName": "createdTime",
"fieldType": "DATETIME"
}
},
"type": [
"null",
{
"type": "record",
"name": "AuditStamp",
"namespace": "com.linkedin.common",
"fields": [
{
"type": "long",
"name": "time",
"doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."
},
{
"java": {
"class": "com.linkedin.common.urn.Urn"
},
"type": "string",
"name": "actor",
"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."
},
{
"java": {
"class": "com.linkedin.common.urn.Urn"
},
"type": [
"null",
"string"
],
"name": "impersonator",
"default": null,
"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."
},
{
"type": [
"null",
"string"
],
"name": "message",
"default": null,
"doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."
}
],
"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."
}
],
"name": "created",
"default": null,
"doc": "Created Audit stamp"
}
],
"doc": "Information about a Corp Group ingested from a third party source"
}

globalTags

Tag aspect used for applying tags to an entity

Schema
{
"type": "record",
"Aspect": {
"name": "globalTags"
},
"name": "GlobalTags",
"namespace": "com.linkedin.common",
"fields": [
{
"Relationship": {
"/*/tag": {
"entityTypes": [
"tag"
],
"name": "TaggedWith"
}
},
"Searchable": {
"/*/tag": {
"addToFilters": true,
"boostScore": 0.5,
"fieldName": "tags",
"fieldType": "URN",
"filterNameOverride": "Tag",
"hasValuesFieldName": "hasTags",
"queryByDefault": true
}
},
"type": {
"type": "array",
"items": {
"type": "record",
"name": "TagAssociation",
"namespace": "com.linkedin.common",
"fields": [
{
"java": {
"class": "com.linkedin.common.urn.TagUrn"
},
"type": "string",
"name": "tag",
"doc": "Urn of the applied tag"
},
{
"type": [
"null",
"string"
],
"name": "context",
"default": null,
"doc": "Additional context about the association"
}
],
"doc": "Properties of an applied tag. For now, just an Urn. In the future we can extend this with other properties, e.g.\npropagation parameters."
}
},
"name": "tags",
"doc": "Tags associated with a given entity"
}
],
"doc": "Tag aspect used for applying tags to an entity"
}

status

The lifecycle status metadata of an entity, e.g. dataset, metric, feature, etc. This aspect is used to represent soft deletes conventionally.

Schema
{
"type": "record",
"Aspect": {
"name": "status"
},
"name": "Status",
"namespace": "com.linkedin.common",
"fields": [
{
"Searchable": {
"fieldType": "BOOLEAN"
},
"type": "boolean",
"name": "removed",
"default": false,
"doc": "Whether the entity has been removed (soft-deleted)."
}
],
"doc": "The lifecycle status metadata of an entity, e.g. dataset, metric, feature, etc.\nThis aspect is used to represent soft deletes conventionally."
}

corpGroupEditableInfo

Group information that can be edited from UI

Schema
{
"type": "record",
"Aspect": {
"name": "corpGroupEditableInfo"
},
"name": "CorpGroupEditableInfo",
"namespace": "com.linkedin.identity",
"fields": [
{
"Searchable": {
"fieldName": "editedDescription",
"fieldType": "TEXT"
},
"type": [
"null",
"string"
],
"name": "description",
"default": null,
"doc": "A description of the group"
},
{
"java": {
"class": "com.linkedin.common.url.Url",
"coercerClass": "com.linkedin.common.url.UrlCoercer"
},
"type": "string",
"name": "pictureLink",
"default": "https://raw.githubusercontent.com/datahub-project/datahub/master/datahub-web-react/src/images/default_avatar.png",
"doc": "A URL which points to a picture which user wants to set as the photo for the group"
},
{
"type": [
"null",
"string"
],
"name": "slack",
"default": null,
"doc": "Slack channel for the group"
},
{
"type": [
"null",
"string"
],
"name": "email",
"default": null,
"doc": "Email address to contact the group"
}
],
"doc": "Group information that can be edited from UI"
}

ownership

Ownership information of an entity.

Schema
{
"type": "record",
"Aspect": {
"name": "ownership"
},
"name": "Ownership",
"namespace": "com.linkedin.common",
"fields": [
{
"type": {
"type": "array",
"items": {
"type": "record",
"name": "Owner",
"namespace": "com.linkedin.common",
"fields": [
{
"Relationship": {
"entityTypes": [
"corpuser",
"corpGroup"
],
"name": "OwnedBy"
},
"Searchable": {
"addToFilters": true,
"fieldName": "owners",
"fieldType": "URN",
"filterNameOverride": "Owned By",
"hasValuesFieldName": "hasOwners",
"queryByDefault": false
},
"java": {
"class": "com.linkedin.common.urn.Urn"
},
"type": "string",
"name": "owner",
"doc": "Owner URN, e.g. urn:li:corpuser:ldap, urn:li:corpGroup:group_name, and urn:li:multiProduct:mp_name\n(Caveat: only corpuser is currently supported in the frontend.)"
},
{
"deprecated": true,
"type": {
"type": "enum",
"symbolDocs": {
"BUSINESS_OWNER": "A person or group who is responsible for logical, or business related, aspects of the asset.",
"CONSUMER": "A person, group, or service that consumes the data\nDeprecated! Use TECHNICAL_OWNER or BUSINESS_OWNER instead.",
"CUSTOM": "Set when ownership type is unknown or a when new one is specified as an ownership type entity for which we have no\nenum value for. This is used for backwards compatibility",
"DATAOWNER": "A person or group that is owning the data\nDeprecated! Use TECHNICAL_OWNER instead.",
"DATA_STEWARD": "A steward, expert, or delegate responsible for the asset.",
"DELEGATE": "A person or a group that overseas the operation, e.g. a DBA or SRE.\nDeprecated! Use TECHNICAL_OWNER instead.",
"DEVELOPER": "A person or group that is in charge of developing the code\nDeprecated! Use TECHNICAL_OWNER instead.",
"NONE": "No specific type associated to the owner.",
"PRODUCER": "A person, group, or service that produces/generates the data\nDeprecated! Use TECHNICAL_OWNER instead.",
"STAKEHOLDER": "A person or a group that has direct business interest\nDeprecated! Use TECHNICAL_OWNER, BUSINESS_OWNER, or STEWARD instead.",
"TECHNICAL_OWNER": "person or group who is responsible for technical aspects of the asset."
},
"deprecatedSymbols": {
"CONSUMER": true,
"DATAOWNER": true,
"DELEGATE": true,
"DEVELOPER": true,
"PRODUCER": true,
"STAKEHOLDER": true
},
"name": "OwnershipType",
"namespace": "com.linkedin.common",
"symbols": [
"CUSTOM",
"TECHNICAL_OWNER",
"BUSINESS_OWNER",
"DATA_STEWARD",
"NONE",
"DEVELOPER",
"DATAOWNER",
"DELEGATE",
"PRODUCER",
"CONSUMER",
"STAKEHOLDER"
],
"doc": "Asset owner types"
},
"name": "type",
"doc": "The type of the ownership"
},
{
"Relationship": {
"entityTypes": [
"ownershipType"
],
"name": "ownershipType"
},
"java": {
"class": "com.linkedin.common.urn.Urn"
},
"type": [
"null",
"string"
],
"name": "typeUrn",
"default": null,
"doc": "The type of the ownership\nUrn of type O"
},
{
"type": [
"null",
{
"type": "record",
"name": "OwnershipSource",
"namespace": "com.linkedin.common",
"fields": [
{
"type": {
"type": "enum",
"symbolDocs": {
"AUDIT": "Auditing system or audit logs",
"DATABASE": "Database, e.g. GRANTS table",
"FILE_SYSTEM": "File system, e.g. file/directory owner",
"ISSUE_TRACKING_SYSTEM": "Issue tracking system, e.g. Jira",
"MANUAL": "Manually provided by a user",
"OTHER": "Other sources",
"SERVICE": "Other ownership-like service, e.g. Nuage, ACL service etc",
"SOURCE_CONTROL": "SCM system, e.g. GIT, SVN"
},
"name": "OwnershipSourceType",
"namespace": "com.linkedin.common",
"symbols": [
"AUDIT",
"DATABASE",
"FILE_SYSTEM",
"ISSUE_TRACKING_SYSTEM",
"MANUAL",
"SERVICE",
"SOURCE_CONTROL",
"OTHER"
]
},
"name": "type",
"doc": "The type of the source"
},
{
"type": [
"null",
"string"
],
"name": "url",
"default": null,
"doc": "A reference URL for the source"
}
],
"doc": "Source/provider of the ownership information"
}
],
"name": "source",
"default": null,
"doc": "Source information for the ownership"
}
],
"doc": "Ownership information"
}
},
"name": "owners",
"doc": "List of owners of the entity."
},
{
"type": {
"type": "record",
"name": "AuditStamp",
"namespace": "com.linkedin.common",
"fields": [
{
"type": "long",
"name": "time",
"doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."
},
{
"java": {
"class": "com.linkedin.common.urn.Urn"
},
"type": "string",
"name": "actor",
"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."
},
{
"java": {
"class": "com.linkedin.common.urn.Urn"
},
"type": [
"null",
"string"
],
"name": "impersonator",
"default": null,
"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."
},
{
"type": [
"null",
"string"
],
"name": "message",
"default": null,
"doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."
}
],
"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."
},
"name": "lastModified",
"default": {
"actor": "urn:li:corpuser:unknown",
"impersonator": null,
"time": 0,
"message": null
},
"doc": "Audit stamp containing who last modified the record and when. A value of 0 in the time field indicates missing data."
}
],
"doc": "Ownership information of an entity."
}

origin

Carries information about where an entity originated from.

Schema
{
"type": "record",
"Aspect": {
"name": "origin"
},
"name": "Origin",
"namespace": "com.linkedin.common",
"fields": [
{
"type": {
"type": "enum",
"symbolDocs": {
"EXTERNAL": "The entity is external to DataHub.",
"NATIVE": "The entity is native to DataHub."
},
"name": "OriginType",
"namespace": "com.linkedin.common",
"symbols": [
"NATIVE",
"EXTERNAL"
],
"doc": "Enum to define where an entity originated from."
},
"name": "type",
"doc": "Where an entity originated from. Either NATIVE or EXTERNAL."
},
{
"type": [
"null",
"string"
],
"name": "externalType",
"default": null,
"doc": "Only populated if type is EXTERNAL. The externalType of the entity, such as the name of the identity provider."
}
],
"doc": "Carries information about where an entity originated from."
}

Relationships

Self

These are the relationships to itself, stored in this entity's aspects

  • IsPartOf (via corpGroupInfo.groups)
  • OwnedBy (via ownership.owners.owner)

Outgoing

These are the relationships stored in this entity's aspects

  • OwnedBy

    • Corpuser via corpGroupInfo.admins
    • Corpuser via ownership.owners.owner
  • IsPartOf

    • Corpuser via corpGroupInfo.members
  • TaggedWith

    • Tag via globalTags.tags
  • ownershipType

    • OwnershipType via ownership.owners.typeUrn

Incoming

These are the relationships stored in other entity's aspects

  • OwnedBy

    • Dataset via ownership.owners.owner
    • DataJob via ownership.owners.owner
    • DataFlow via ownership.owners.owner
    • DataProcess via ownership.owners.owner
    • Chart via ownership.owners.owner
    • Dashboard via ownership.owners.owner
    • Notebook via ownership.owners.owner
  • IsMemberOfGroup

    • Corpuser via groupMembership.groups
  • IsMemberOfNativeGroup

    • Corpuser via nativeGroupMembership.nativeGroups

Global Metadata Model

Global Graph