Skip to main content

Repository

A Repository is a first-class representation of a source-code repository (GitHub, GitLab, an internal SCM, etc.). It is the genesis node of the software-to-data lifecyclerepo → service → api → app → dataset — and produces the Services, APIs, and Applications cataloged elsewhere. A Repository is not a tabular asset: it has no columns, queries, statistics, quality, or preview.

Identity

Repositories are identified by a single field:

  • id: A unique identifier for the repository. By convention this is <platform>.<org>/<name> (e.g. github.acme/payments, gitlab.acme/data-platform); native or unknown-platform repos may omit the platform prefix.

An example URN is urn:li:repository:github.acme/payments. The key itself is platform-agnostic — the platform is carried on the dataPlatformInstance aspect rather than in the key.

Important Capabilities

Repository Properties

The repositoryProperties aspect holds the descriptive metadata:

  • name: Display name, searchable with autocomplete.
  • description: What the repository contains.
  • defaultBranch: The default branch (e.g. main, master).
  • languages: The programming languages used, conventionally ordered most-prevalent first (repositories are frequently polyglot, so this is a list).
  • license: The repository's license (e.g. Apache-2.0, MIT).
  • homepageUrl: A link to the repository's homepage or documentation.
  • archived: Whether the repository is archived (read-only / no longer maintained).
  • created / lastModified: Audit stamps.

Source Binding

The repositorySource aspect records where the repository lives and how it is identified in its source system: the externalUrl (web or clone URL) and the externalId (e.g. a GitHub numeric repo id or an org/name slug).

Lineage

The repositoryLineage aspect records provenance between repositories — currently forkOf, the repository this one is a git fork of (RepositoryForkOf).

Beyond fork lineage, a Repository is the upstream anchor of the software-to-data chain: the Services and APIs it produces point back to it via their SourcedFrom edges, and Agent Skills may name it as their source of truth. A Repository profile therefore surfaces "what it produces" as incoming SourcedFrom relationships.

Governance

Repositories support the standard governance aspects — ownership, tags, glossary terms, domains, structured properties, and institutional memory — plus browse paths (browsePathsV2) and the standard subTypes aspect (e.g. GIT_REPOSITORY).

Technical Reference Guide

The sections above provide an overview of how to use this entity. The following sections provide detailed technical information about how metadata is stored and represented in DataHub.

Aspects are the individual pieces of metadata that can be attached to an entity. Each aspect contains specific information (like ownership, tags, or properties) and is stored as a separate record, allowing for flexible and incremental metadata updates.

Relationships show how this entity connects to other entities in the metadata graph. These connections are derived from the fields within each aspect and form the foundation of DataHub's knowledge graph.

Reading the Field Tables

Each aspect's field table includes an Annotations column that provides additional metadata about how fields are used:

  • ⚠️ Deprecated: This field is deprecated and may be removed in a future version. Check the description for the recommended alternative
  • Searchable: This field is indexed and can be searched in DataHub's search interface
  • Searchable (fieldname): When the field name in parentheses is shown, it indicates the field is indexed under a different name in the search index. For example, dashboardTool is indexed as tool
  • → RelationshipName: This field creates a relationship to another entity. The arrow indicates this field contains a reference (URN) to another entity, and the name indicates the type of relationship (e.g., → Contains, → OwnedBy)

Fields with complex types (like Edge, AuditStamp) link to their definitions in the Common Types section below.

Aspects

repositoryProperties

Code-specific properties for a Repository entity.

A Repository is a first-class representation of a source-code repository (GitHub, GitLab, internal SCM, etc.). It is the genesis node of the software -> data lifecycle (repo -> service -> api -> app -> dataset) and produces the services/APIs/apps cataloged elsewhere. It is NOT tabular (no columns / queries / stats / quality / preview).

FieldTypeRequiredDescriptionAnnotations
namestringDisplay name of the repository, shown in UI and search results.Searchable
descriptionstringDescription of what this repository contains.Searchable
defaultBranchstringThe default branch of the repository (e.g. "main", "master").
languagesstring[]The programming languages used in the repository (e.g. ["Python", "TypeScript"]), conventionally ...
licensestringThe license of the repository (e.g. "Apache-2.0", "MIT").
homepageUrlstringA link to the repository's homepage or documentation.
archivedbooleanWhether the repository is archived (read-only / no longer maintained).
createdAuditStampWhen this repository was created.Searchable
lastModifiedAuditStampWhen this repository was last modified.Searchable

repositorySource

The source binding for a Repository ��� where the repository lives and how it is identified in its source system. Reusable across any synced or native repo.

FieldTypeRequiredDescriptionAnnotations
externalUrlstringThe web or clone URL of the repository in its source system.
externalIdstringThe identifier of the repository in its source system (e.g. a GitHub numeric repo id or an org/na...

repositoryLineage

Provenance edges between Repository entities.

FieldTypeRequiredDescriptionAnnotations
forkOfstringThe repository this one is a git fork of. A plain provenance edge.→ RepositoryForkOf

subTypes

Sub Types. Use this aspect to specialize a generic Entity e.g. Making a Dataset also be a View or also be a LookerExplore

FieldTypeRequiredDescriptionAnnotations
typeNamesstring[]The names of the specific types.Searchable

dataPlatformInstance

The specific instance of the data platform that this entity belongs to

FieldTypeRequiredDescriptionAnnotations
platformstringData PlatformSearchable
instancestringInstance of the data platform (e.g. db instance)Searchable (platformInstance)

ownership

Ownership information of an entity.

FieldTypeRequiredDescriptionAnnotations
ownersOwner[]List of owners of the entity.
ownerTypesmapOwnership type to Owners map, populated via mutation hook.Searchable
lastModifiedAuditStampAudit stamp containing who last modified the record and when. A value of 0 in the time field indi...

status

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

FieldTypeRequiredDescriptionAnnotations
removedbooleanWhether the entity has been removed (soft-deleted). Kept for backward compatibility. When lifecyc...Searchable
lifecycleStagestringThe lifecycle stage of the entity, referencing a lifecycleStageType entity. When null, the entity...Searchable
lifecycleLastUpdatedAuditStampAttribution for the lifecycle stage transition ��� who moved the entity into its current stage an...

globalTags

Tag aspect used for applying tags to an entity

FieldTypeRequiredDescriptionAnnotations
tagsTagAssociation[]Tags associated with a given entitySearchable, → TaggedWith

glossaryTerms

Related business terms information

FieldTypeRequiredDescriptionAnnotations
termsGlossaryTermAssociation[]The related business terms
auditStampAuditStampAudit stamp containing who reported the related business term

semanticContent

Semantic content for enabling vector similarity search.

This aspect stores chunked text and embedding vectors for any entity that supports semantic search. Generation of the data for this aspect should be built in tight collaboration with the embedding generator during semantic search query processing. Chunk determination and generation can happen somewhat independently The data in this aspect is directly passed along to the semantic search index.

Design notes:

  • Supports multiple embedding models (e.g., different providers or versions)
  • Supports chunked content for long documents
  • Text field is optional to support privacy-sensitive use cases where only embeddings (not source text) are shared with DataHub
FieldTypeRequiredDescriptionAnnotations
embeddingsmapMap of embedding model name to embedding data. Key is the model identifier (e.g., cohere_embed_v3...

domains

Links from an Asset to its Domains

FieldTypeRequiredDescriptionAnnotations
domainsstring[]The Domains attached to an AssetSearchable, → AssociatedWith
domainAssociationsDomainAssociation[]Additional per-domain association metadata such as attribution and propagation source. A superset...

institutionalMemory

Institutional memory of an entity. This is a way to link to relevant documentation and provide description of the documentation. Institutional or tribal knowledge is very important for users to leverage the entity.

FieldTypeRequiredDescriptionAnnotations
elementsInstitutionalMemoryMetadata[]List of records that represent institutional memory of an entity. Each record consists of a link,...

structuredProperties

Properties about an entity governed by StructuredPropertyDefinition

FieldTypeRequiredDescriptionAnnotations
propertiesStructuredPropertyValueAssignment[]Custom property bag.

browsePathsV2

Shared aspect containing a Browse Path to be indexed for an entity.

FieldTypeRequiredDescriptionAnnotations
pathBrowsePathEntry[]A valid browse path for the entity. This field is provided by DataHub by default. This aspect is ...Searchable

Common Types

These types are used across multiple aspects in this entity.

AuditStamp

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.

Fields:

  • time (long): When did the resource/association/sub-resource move into the specific lifecyc...
  • actor (string): The entity (e.g. a member URN) which will be credited for moving the resource...
  • impersonator (string?): The entity (e.g. a service URN) which performs the change on behalf of the Ac...
  • message (string?): Additional context around how DataHub was informed of the particular change. ...

Relationships

Self

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

  • RepositoryForkOf (via repositoryLineage.forkOf)

Outgoing

These are the relationships stored in this entity's aspects

  • OwnedBy

    • Corpuser via ownership.owners.owner
    • CorpGroup via ownership.owners.owner
  • ownershipType

    • OwnershipType via ownership.owners.typeUrn
  • TaggedWith

    • Tag via globalTags.tags
  • TermedWith

    • GlossaryTerm via glossaryTerms.terms.urn
  • AssociatedWith

    • Domain via domains.domains

Incoming

These are the relationships stored in other entity's aspects

  • SourcedFrom

    • Service via serviceProperties.sourceRepository
    • Api via apiProperties.sourceRepository

Global Metadata Model

Global Graph

💡 Contributing to this documentation

This page is auto-generated from the underlying source code. To make changes, please edit the relevant source files in the metadata-models directory.

Tip: For quick typo fixes or documentation updates, you can click the ✏️ Edit icon directly in the GitHub UI to open a Pull Request. For larger changes and PR naming conventions, please refer to our Contributing Guide.