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]:contextuses:as separator; the resource pathresource-type/resource-iduses/and is defined by the bounded context. Sub-resources extend the resource path (resource-type/id/sub-type/sub-id). areais one ofglobal,workspace,supply,community,manufacture.tenant-ididentifies the owning tenant (the Workspace GUID for Workspace resources). It is left empty for resources that no tenant owns, which gives a double colon (::).contextnames the bounded context,resource-typethe kind of entity, andresource-idis 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:
- Uniqueness — one stable identifier that is unique across the whole platform.
- 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
GRIDis a scalar type incore.yamlwith basestr. LinkML does not validate the content of a GRID string; the platform defines and enforces the format.- Every class under
core_Entityinherits the identifier slotcore_id(aliasid), whose range isGRID. Resources (core_Resource) have no GRID; some of them (27 of 63 concrete Resources) havecore_localId, an identifier that is unique only within its context. See Entity Classification. - A class documents the GRID of its instances with a
gridannotation — a template with placeholders:{workspace-id}for the tenant,{id}for the local ID, and a named placeholder for a sub-resource ID ({offerID}insup_Offer). The annotation is informational: it is shown in the documentation and consumed by tooling, and it does not affect LinkML validation.cdm-lintchecks 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=301only after the target has been confirmed, tested and merged in the w3id.org repository.