Skip to content

GRIDs

A GRID (Global Resource ID) is the platform-wide identifier of an entity on the Altium platform, such as a project, a component, a BOM or a task. The format is defined by the platform and documented on the Altium Developer Center page GRID; that page is the authority for the format. This page explains how the CDM uses GRIDs and lists the GRID template the schema declares for each class, grouped by bounded context.

Format

grid:area:[tenant-id]:context:resource-type/resource-id

In short (see the official page for the full definition):

  • The context path area:[tenant-id]:context uses : as separator; the resource path resource-type/resource-id uses / and is defined by the bounded context. Sub-resources extend the resource path (resource-type/id/sub-type/sub-id).
  • area is one of global, workspace, supply, community, manufacture.
  • tenant-id identifies the owning tenant (the Workspace GUID for Workspace resources). It is left empty for resources that no tenant owns, which gives a double colon (::).
  • context names the bounded context, resource-type the kind of entity, and resource-id is the entity's local identifier — a GUID in some contexts, a number in others; it is not always a UUID.
  • GRIDs are case-sensitive.

Design principles

  • Brand- and product-agnostic — area names follow OAuth scope areas and contain no product names, so GRIDs stay valid when products are renamed.
  • Readable — the resource type is a human-readable name from the domain vocabulary, so a GRID shows what kind of entity it identifies and which context owns it.

Why GRIDs exist

Most platform entities have a local ID — a GUID or a number — that is unique only where it was issued: two projects in different Workspaces may share a GUID, and the ID of a supply part is meaningful only to the supply system. A local ID alone therefore cannot identify an entity when services, events or integrations exchange references. Some Platform API entities still expose opaque, base64-encoded node IDs from the underlying GraphQL framework; these are being replaced by GRIDs step by step.

A GRID therefore provides:

  1. Uniqueness — one stable identifier that is unique across the whole platform.
  2. Context in the identifier — the GRID carries the area, tenant, bounded context and resource type next to the local ID, so the platform can locate the entity from the GRID alone. The Platform API gateway uses this to route a node(id: …) query to the right subgraph.

Catalogue

The GRID template of every class that declares one, per bounded context. Templates are informational and are declared per class in the grid annotation.

Platform

Bounded context page: Platform.

Entity GRID template
Application grid:global::platform:app/{id}
Event Subscription grid:global::events:subscription/{id}
Lifecycle Definition grid:workspace:{workspace-id}:platform:lifecycle-definition/{id}
Revision Naming Scheme grid:workspace:{workspace-id}:platform:revision-naming-scheme/{id}
Organization grid:global::platform:organization/{id}
Solution grid:workspace:{workspace-id}:platform:solution/{id}
Solution Release grid:workspace:{workspace-id}:platform:solution-release/{id}
User grid:global::platform:user/{id}
User Group grid:global::platform:group/{id}
Workspace grid:global::platform:workspace/{id}
Workspace Group grid:workspace:{workspace-id}:team:group/{id}
Workspace User grid:workspace:{workspace-id}:team:user/{id}

Design

Bounded context page: Design.

Entity GRID template
Design Review grid:workspace:{workspace-id}:design:design-review/{id}
Manufacturing Package grid:workspace:{workspace-id}:design:manufacturing-package/{id}
Hardware Project grid:workspace:{workspace-id}:design:project/{id}
Hardware Project Release grid:workspace:{workspace-id}:design:project-release/{id}
Project Template grid:workspace:{workspace-id}:design:project-template/{id}
Project Template Revision grid:workspace:{workspace-id}:design:project-template-revision/{id}
Rule Check grid:workspace:{workspace-id}:design:rule-check/{id}
Rule Check Execution grid:workspace:{workspace-id}:design:rule-check-execution/{id}

Insights

Bounded context page: Insights.

Entity GRID template
Insight grid:workspace:{workspace-id}:insights:insight/{id}

Library Management

Bounded context page: Library Management.

Entity GRID template
Component grid:workspace:{workspace-id}:library:component/{id}
Component Revision grid:workspace:{workspace-id}:library:component-revision/{id}
Component Template grid:workspace:{workspace-id}:library:component-template/{id}
Component Template Revision grid:workspace:{workspace-id}:library:component-template-revision/{id}
Datasheet grid:workspace:{workspace-id}:library:datasheet/{id}
Footprint grid:workspace:{workspace-id}:library:footprint/{id}
Footprint Revision grid:workspace:{workspace-id}:library:footprint-revision/{id}
Managed Sheet grid:workspace:{workspace-id}:library:managed-sheet/{id}
Managed Sheet Revision grid:workspace:{workspace-id}:library:managed-sheet-revision/{id}
Part grid:workspace:{workspace-id}:library:part/{id}
Part Request grid:workspace:{workspace-id}:library:part-request/{id}
Reuse Block grid:workspace:{workspace-id}:library:reuse-block/{id}
Reuse Block Revision grid:workspace:{workspace-id}:library:reuse-block-revision/{id}
Symbol grid:workspace:{workspace-id}:library:symbol/{id}
Symbol Revision grid:workspace:{workspace-id}:library:symbol-revision/{id}

Collaboration

Bounded context page: Collaboration.

Entity GRID template
Comment Thread grid:workspace:{workspace-id}:collaboration:comment-thread/{id}
Task grid:workspace:{workspace-id}:collaboration:task/{id}

Procurement

Bounded context page: Procurement.

Entity GRID template
BOM Release grid:workspace:{workspace-id}:procurement:bom-release/{id}
Consolidated BOM grid:workspace:{workspace-id}:procurement:consolidated-bom/{id}
Global BOM grid:global::procurement:bom/{id}
Managed BOM grid:workspace:{workspace-id}:procurement:bom/{id}

Supply

Bounded context page: Supply.

Entity GRID template
Company grid:supply::platform:company/{id}
Evaluation Kit grid:supply::platform:eval-kit/{id}
Offer grid:supply::platform:part/{id}/offer/{offerID}
Part grid:supply::platform:part/{id}
Part Family grid:supply::platform:part-family/{id}
Part Group grid:supply::platform:part-group/{id}
Reference Design grid:supply::platform:ref-design/{id}
Software Project grid:supply::platform:software-project/{id}
Solution Template grid:supply::platform:solution-template/{id}

Customization

Bounded context page: Customization.

Entity GRID template
Script grid:workspace:{workspace-id}:scripts:script/{id}
Script Execution grid:workspace:{workspace-id}:scripts:execution/{id}
Script Version grid:workspace:{workspace-id}:scripts:script-version/{id}
Workflow grid:workspace:{workspace-id}:customization:workflow/{id}

System Design

Bounded context page: System Design.

Entity GRID template
ESD Document grid:workspace:{workspace-id}:system-design:esd/{id}
Global ESD grid:global::system-design:esd/{id}

System Design - System Data Model

Bounded context page: System Design - System Data Model.

Entity GRID template
System Model grid:workspace:{workspace-id}:system-design:sdm/{id}
System Model Version grid:workspace:{workspace-id}:system-design:sdm-version/{id}

Requirements

Bounded context page: Requirements.

Entity GRID template
Requirements Project grid:workspace:{workspace-id}:requirements:project/{id}
Requirement grid:workspace:{workspace-id}:requirements:requirement/{id}
Requirement Baseline grid:workspace:{workspace-id}:requirements:baseline/{id}
Requirement Change Request grid:workspace:{workspace-id}:requirements:change-request/{id}
Requirement Revision grid:workspace:{workspace-id}:requirements:requirement-revision/{id}
Requirement Specification grid:workspace:{workspace-id}:requirements:specification/{id}
Verification Case grid:workspace:{workspace-id}:requirements:verification-case/{id}

Device Model

Bounded context page: Device Model.

Entity GRID template
FullStackDeviceModel grid:global::device-model:fullstack-dm/{id}

Software

Bounded context page: Software.

Entity GRID template
AI Model grid:workspace:{workspace-id}:software:ai-model/{id}
Device Configuration grid:workspace:{workspace-id}:software:device-configuration/{id}
Device Configuration Revision grid:workspace:{workspace-id}:software:device-configuration-revision/{id}
Software Project grid:workspace:{workspace-id}:software:software-project/{id}
Software Release grid:workspace:{workspace-id}:software:software-release/{id}

Over-the-Air Updates

Bounded context page: Over-the-Air Updates.

Entity GRID template
Deployment grid:workspace:{workspace-id}:ota:deployment/{id}
Deployment Result grid:workspace:{workspace-id}:ota:deployment-result/{id}
Device grid:workspace:{workspace-id}:ota:device/{id}
Fleet grid:workspace:{workspace-id}:ota:fleet/{id}
Package grid:workspace:{workspace-id}:ota:package/{id}

The GRID context is not the CDM subset

The context segment is the platform's bounded-context name, which often but not always equals the CDM subset. For example, the system classes use system-design, the full-stack device model uses device-model, supply records use context platform in area supply, scripts use scripts, Workspace users and groups use team, and event subscriptions use events. The catalogue above is grouped by bounded context; the GRID context of a class is the context segment of its template.

GRIDs in the schema

  • GRID is a scalar type in core.yaml with base str. LinkML does not validate the content of a GRID string; the platform defines and enforces the format.
  • Every class under core_Entity inherits the identifier slot core_id (alias id), whose range is GRID. Resources (core_Resource) have no GRID; some of them (27 of 63 concrete Resources) have core_localId, an identifier that is unique only within its context. See Entity Classification.
  • A class documents the GRID of its instances with a grid annotation — a template with placeholders: {workspace-id} for the tenant, {id} for the local ID, and a named placeholder for a sub-resource ID ({offerID} in sup_Offer). The annotation is informational: it is shown in the documentation and consumed by tooling, and it does not affect LinkML validation. cdm-lint checks that it has the shape of a GRID (rule LINT-07).
system_ESDDocument:
  is_a: core_Activity
  in_subset: system
  class_uri: sys:ESDDocument
  annotations:
    grid: grid:workspace:{workspace-id}:system-design:esd/{id}
    platformAPI: SysEsdDocument

Not every entity class has a template yet; the catalogue lists those that do.

GRIDs and schema IRIs

A GRID identifies an instance on the platform. Classes, slots and enums of the schema are identified by IRIs, declared with class_uri, slot_uri and enum_uri:

Element Pattern Example
Class prefix:ClassName sys:ESDDocument
Class-specific slot prefix:ClassName_fieldName sys:ESDDocument_functionalBlocks
Enum prefix:EnumName sys:PortType

Each prefix expands to a namespace declared by the schema files:

Every prefix declared by the schema files, with the bounded context that owns the namespace where it has the form https://w3id.org/altium/cdm/<subset>/.

Prefix Namespace Bounded context
cdm https://w3id.org/altium/cdm/
col https://w3id.org/altium/cdm/collaboration/ Collaboration
con https://w3id.org/altium/cdm/configuration/ Configuration Management
core https://w3id.org/altium/cdm/core/ Core
cus https://w3id.org/altium/cdm/customization/ Customization
des https://w3id.org/altium/cdm/design/ Design
dm https://w3id.org/altium/cdm/deviceModel/ Device Model
ins https://w3id.org/altium/cdm/insights/ Insights
lib https://w3id.org/altium/cdm/library/ Library Management
linkml https://w3id.org/linkml/
obo http://purl.obolibrary.org/obo/
ota https://w3id.org/altium/cdm/ota/ Over-the-Air Updates
plt https://w3id.org/altium/cdm/platform/ Platform
pro https://w3id.org/altium/cdm/procurement/ Procurement
prov http://www.w3.org/ns/prov#
req https://w3id.org/altium/cdm/requirement/ Requirements
schema http://schema.org/
sft https://w3id.org/altium/cdm/software/ Software
shex http://www.w3.org/ns/shex#
sup https://w3id.org/altium/cdm/supply/ Supply
sys https://w3id.org/altium/cdm/system/ System Design
xsd http://www.w3.org/2001/XMLSchema#

A new subset prefix needs formal approval of the subset it belongs to (see AGENTS.md §6 in the repository). External vocabulary prefixes allow-listed for mappings (prov:, obo:) are exempt.

Resolving IRIs through w3id.org

IRIs under https://w3id.org/altium/cdm/ are redirected by the w3id.org persistent identifier service to this documentation site; the redirects are currently temporary (HTTP 302). Not every class IRI resolves yet (MF-076): IRIs in the system namespace, such as https://w3id.org/altium/cdm/system/ESDDocument, redirect to classes/sys_<Class>/, which does not exist (the pages are classes/system_<Class>/), and IRIs in the requirement namespace (for example https://w3id.org/altium/cdm/requirement/Requirement) get a 404 from w3id.org, which redirects only the requirements/ path. Rules for changing the redirects:

  • Keep redirects temporary (R=302) until the target URL is confirmed correct and stable.
  • Never deploy a permanent redirect (R=301) to an unverified target: browsers and ontology tools cache permanent redirects, and there is no easy way to roll them back.
  • Switch to R=301 only after the target has been confirmed, tested and merged in the w3id.org repository.