Skip to main content

Linkage ๐Ÿšง

Maturity

Official URL: https://bcgov.github.io/nr-pies/docs/spec/element/message/linkage

JSON Schema URL: https://raw.githubusercontent.com/bcgov/nr-pies/refs/heads/main/docs/spec/element/message/linkage.schema.json

Represents a message asserting a linkage between specific assets.

Scopeโ€‹

This message type allows systems to assert a relationship between two specific assets. The message represents an assertion from the originating system's perspective. Consuming systems must validate the relationship and implicitly trust the assertion source.

A Linkage message is scoped to a single pair of assets and captures the relationship between them, similar in structure to a group message but specific to asset pairs.

Structureโ€‹

A linkage message shall contain all flattened Header properties.

All linkages shall be denoted with a kind property value of LINKAGE as defined in Message Kind.

Linkages shall declare the following properties in addition to flattened Header properties:

NameCardinalityTypeDescription & Constraints
asset_group1..1AssetA binding asset entity that tracks the relationship between a primary asset and a linked asset.
linked_asset_id1..1stringThe unique identifier or primary key of the asset to be linked.
linked_asset_kind1..1stringThe asset type or classification within the source system (for example, Anchor or Permit).
linked_system_id1..1stringA valid CSNR IT Service Management code identifying the originating source system, service, or asset.
relation_kind1..1CodeThe kind of relation between the primary asset and the linked asset (for example, MERGES, RELATES, SELF, SPLITS).

Binding Constraintsโ€‹

The asset_group field binds the relationship and typically originates from the declaring system:

  • The asset_group represents a classification or grouping for the relationship as defined by the asset-owning system
  • The relation_kind specifies the nature of the link (MERGES, RELATES, SELF, SPLITS)
  • A Linkage connects the primary asset (defined in Header) to a linked asset via this asset group

Specificationโ€‹

Loading ....

Implementation Guidanceโ€‹

Purposeโ€‹

The Linkage message defines a specific relationship between a primary asset and a linked asset. Consuming systems may use this message to explicitly bind assets together.

Creating Linkage Messagesโ€‹

When generating a Linkage message:

  • Include the linked_asset_id and linked_asset_kind of the asset being linked
  • Specify the linked_system_id that owns the linked asset
  • Provide the asset_group entity from the declaring system that describes or groups the relationship
  • Declare the relation_kind to specify the nature of the link (MERGES, RELATES, SELF, SPLITS)
  • Create separate messages for each unique asset pair or relationship type

Single-System Assertionโ€‹

Each Linkage message must represent a single assertion from one system. Always create separate messages when an asset needs to assert multiple relationships.

Group Orthogonalityโ€‹

The Linkage message is orthogonal to the Group message, meaning that both can coexist and express the same relationships without conflict. While the Linkage message explicitly defines a relationship between an asset pair, the Group message implicitly binds a primary asset to a set of related assets. Systems may use both message types to represent different aspects of various asset relationships.

Referencesโ€‹