From 52611196b47ff58cc774422335c15f8eed97c30d Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Thu, 9 Apr 2026 14:25:26 +0530 Subject: [PATCH 01/18] Specifications for Foundational DP --- PRD.md | 970 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 970 insertions(+) create mode 100644 PRD.md diff --git a/PRD.md b/PRD.md new file mode 100644 index 00000000..4da9b54d --- /dev/null +++ b/PRD.md @@ -0,0 +1,970 @@ +# PRD: Foundation Deployment Pack (`dp:foundation`) + +## Overview + +The **Foundation Deployment Pack** (`dp:foundation`) is a scalable, modular CDF deployment package that gives industrial projects a well-structured starting point. It covers the full stack from source system extraction through contextualization: production-grade extractor configuration templates for PI, OPC-UA, and SAP; an enterprise data model; a modular ingestion orchestration workflow; and contextualization capabilities including file annotation, entity matching, and SQL-based connections. + +Every module is independently deployable. The package supports `canCherryPick = true`, so teams select only the source systems and capabilities they need. Adding a new source system or contextualization step means adding a module — not modifying existing ones. + +--- + +## Background + +### Who is this for? + +The primary users of `dp:foundation` are **Deployment Engineers (DEs)** and **Cognite partners** who are responsible for standing up CDF environments for industrial customers. Secondary users are **Solutions Architects** who define the project structure before a DE takes over, and — in more self-serve engagements — **technically capable customers** who own their own CDF configuration. + +### What is the pain today? + +When a DE starts a new CDF project, there is no authoritative, reusable starting point that covers the full stack. The options available today each have gaps: + +- **`dp:quickstart`** is demo-oriented — it ships synthetic data and pre-configured connections that are tightly coupled to a fictional "Springfield" site. Removing synthetic data, renaming locations, or swapping a source system requires touching files across multiple modules. It is not designed to evolve into a production deployment. +- **Blank-slate projects** (no DP) require DEs to assemble spaces, datasets, groups, extractor configs, transformations, and orchestration from scratch on every engagement. This leads to inconsistent project structures, configuration drift, and undocumented decisions. +- **gss-knowledge-base** contains mature extractor configuration templates (PI, OPC-UA, SAP) but they are not wired into any deployable DP — DEs must manually locate, copy, and adapt them per project. + +The result is that each new deployment is partially reinvented, slowing delivery and introducing variability that makes cross-project support harder. + +### What does this enable? + +`dp:foundation` gives DEs and partners a single, composable starting point they can deploy to a real customer project on day one: + +- Extractor configuration templates for the three most common industrial source systems are bundled and ready — no gss-knowledge-base lookup required. +- The project structure (spaces, datasets, groups, data model, orchestration) is standardised and parameterised by `location` — a new site is a new variable value, not a new set of files. +- Contextualization is a first-class, deployable capability, not an afterthought. +- The architecture is open for extension (add a module, set a variable) rather than modification (fork and edit). + +--- + +## Goals + +- Provide a complete, deployable CDF project structure: spaces, datasets, auth groups, data model, extraction pipelines, transformations, ingestion orchestration, and contextualization. +- Ship production-grade extractor configuration templates for **PI**, **OPC-UA**, and **SAP** sourced from gss-knowledge-base, so field engineers get a real starting point with all required parameters documented. +- Each source system module is self-contained and independently deployable — no module fails to deploy because another is absent. +- Ingestion orchestration is source-agnostic: configuring which transformations run in which phase is the only customization required when adding or removing a source system. +- Contextualization modules (file annotation, entity matching, SQL connections) and a contextualization quality dashboard are first-class parts of this DP. + +--- + +## Non-Goals (v1 Scope Exclusions) + +The following are deliberately out of scope for the initial release. Excluding them keeps v1 focused and deliverable; they are candidates for later phases. + +| Excluded | Rationale | +|---|---| +| **Maximo, Meridium, other CMMS** | SAP is the most common asset/maintenance source system in the target segment. Additional CMMS sources are P2+ work. | +| **OSIsoft PI Asset Framework (AF)** | `cdf_pi_foundation` covers the PI Data Archive (timeseries) via the PI .NET Extractor. PI AF hierarchy ingestion requires a separate extractor and transformation pattern; not in v1. | +| **SAP PM via IDoc / RFC** | The SAP OData extractor pattern is the primary integration. IDoc and RFC-based extractions require different tooling and are not covered. | +| **OPC-UA Historical Access (HDA)** | The OPC-UA module covers live/subscribed data. Historical data backfill via HDA is a separate configuration concern; left as a documented extension pattern. | +| **OOTB (Out-of-the-Box) Cognite project setup** | `dp:foundation` does not configure IDP, project creation, or network connectivity. It assumes a provisioned CDF project with IDP authentication already in place. | +| **Atlas AI / OOTB Agents** | AI agent deployment (`dp:atlas_ai`) is a P2 concern layered on top of a working foundation. | +| **Automated transformation unit tests** | A testing framework for verifying transformation SQL output is a P1 concern. | +| **Multi-tenant or multi-project federation** | Each deployment of `dp:foundation` targets a single CDF project. Cross-project data federation is out of scope. | +| **Sharepoint / document source system** | File ingestion from SharePoint is not included in v1. A generic `cdf_documents_foundation` module is a P1 candidate. | + +--- + +## Target Users + +| Persona | How this DP helps | +|---|---| +| **Field Engineers** setting up a new customer project | Drop-in extractor config templates (PI, OPC-UA, SAP) with all required parameters pre-documented; fill in credentials and run | +| **Solutions Architects** designing a scalable CDF project | Modular structure grows by adding modules, not by forking; shared variable contract means location-specific config lives in one place | +| **Customers** deploying CDF for the first time | Clear, layered architecture from data model → source systems → orchestration → contextualization; cherry-pick only what applies | + +--- + +## Module Architecture + +### Package Composition + +```toml +[packages.foundation] +id = "dp:foundation" +title = "Foundation Deployment Pack" +description = "A scalable, modular foundation for industrial CDF projects. Includes an enterprise data model, production-grade extractor config templates for PI, OPC-UA, and SAP, modular ingestion orchestration, and contextualization with quality dashboards." +canCherryPick = true +modules = [ + # Core infrastructure + "foundation/cdf_foundation", + "models/qs_enterprise_dm", + # Source systems — deploy the ones matching your site + "sourcesystem/cdf_pi_foundation", + "sourcesystem/cdf_opcua_foundation", + "sourcesystem/cdf_sap_foundation", + # Ingestion orchestration + "foundation/cdf_ingestion_foundation", + # Contextualization + "accelerators/contextualization/cdf_file_annotation", + "accelerators/contextualization/cdf_entity_matching", + "accelerators/contextualization/cdf_connection_sql", + # Search + "accelerators/industrial_tools/cdf_search", + # Contextualization quality + "dashboards/context_quality", +] +``` + +New modules created as part of this DP: +- `foundation/cdf_foundation` +- `sourcesystem/cdf_pi_foundation` +- `sourcesystem/cdf_opcua_foundation` +- `sourcesystem/cdf_sap_foundation` +- `foundation/cdf_ingestion_foundation` + +Existing modules referenced without modification: +- `models/qs_enterprise_dm` +- `accelerators/contextualization/cdf_file_annotation` +- `accelerators/contextualization/cdf_entity_matching` +- `accelerators/contextualization/cdf_connection_sql` +- `accelerators/industrial_tools/cdf_search` +- `dashboards/context_quality` + +--- + +### Module Dependency Flow + +``` +┌──────────────────────────────────────────────────────────────────────────────┐ +│ LAYER 0 — DATA MODEL │ +│ │ +│ ┌───────────────────────────────────────────────────────────────────────┐ │ +│ │ models/qs_enterprise_dm [existing] │ │ +│ │ 39 views · 46 containers · 3 spaces · 2 data models │ │ +│ │ sp_enterprise_process_industry · sp_enterprise_instance │ │ +│ └───────────────────────────────────────────────────────────────────────┘ │ +└──────────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────────────────────────┐ +│ LAYER 1 — PROJECT FOUNDATION │ +│ │ +│ ┌───────────────────────────────────────────────────────────────────────┐ │ +│ │ foundation/cdf_foundation [new] │ │ +│ │ Spaces · Datasets · Auth groups · Base RAW database │ │ +│ │ Defines: location, organization, schemaSpace, instanceSpace vars │ │ +│ └───────────────────────────────────────────────────────────────────────┘ │ +└──────────────────────────────────────────────────────────────────────────────┘ + │ │ │ + ┌─────────┘ ┌───────┘ ┌───────┘ + ▼ ▼ ▼ +┌──────────────────┐ ┌─────────────────┐ ┌────────────────────┐ +│ LAYER 2 — SOURCE SYSTEMS (independently deployable) │ +│ │ +│ sourcesystem/ │ sourcesystem/ │ sourcesystem/ │ +│ cdf_pi_ │ cdf_opcua_ │ cdf_sap_ │ +│ foundation │ foundation │ foundation │ +│ [new] │ [new] │ [new] │ +│ │ │ │ +│ EP config tmpl │ EP config tmpl │ EP config tmpl │ +│ (PI .NET) │ (OPC-UA) │ (SAP OData) │ +│ RAW DB + table │ RAW DB + table │ RAW DB + 5 tables │ +│ 1 transformation│ 1 transformation │ 6 transformations │ +│ TS → DM views │ TS → DM views │ Assets+Events→DM │ +└──────────────────┘ └─────────────────┘ └────────────────────┘ + │ │ │ + └────────────────────┴───────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────────────────────────┐ +│ LAYER 3 — INGESTION ORCHESTRATION │ +│ │ +│ ┌───────────────────────────────────────────────────────────────────────┐ │ +│ │ foundation/cdf_ingestion_foundation [new] │ │ +│ │ Two-phase workflow: Population → Contextualization │ │ +│ │ Phase tasks are configured via variable lists — no hardcoded sources │ │ +│ │ Parallel execution within each phase · Abort on failure │ │ +│ └───────────────────────────────────────────────────────────────────────┘ │ +└──────────────────────────────────────────────────────────────────────────────┘ + │ + ┌─────────────────────┼──────────────────────┐ + ▼ ▼ ▼ +┌──────────────────────────────────────────────────────────────────────────────┐ +│ LAYER 4 — CONTEXTUALIZATION (existing modules, no changes) │ +│ │ +│ ┌──────────────────┐ ┌───────────────────┐ ┌─────────────────────────┐ │ +│ │ cdf_file_ │ │ cdf_entity_ │ │ cdf_connection_sql │ │ +│ │ annotation │ │ matching │ │ │ │ +│ │ [existing] │ │ [existing] │ │ [existing] │ │ +│ │ P&ID annotation │ │ TS→Asset AI │ │ SQL relation builder │ │ +│ │ 4 functions │ │ matching │ │ TS→Equipment │ │ +│ │ 1 workflow │ │ 2 functions │ │ Order→Asset │ │ +│ └──────────────────┘ └───────────────────┘ └─────────────────────────┘ │ +└──────────────────────────────────────────────────────────────────────────────┘ + │ + ┌─────────────────────┴──────────────────────┐ + ▼ ▼ +┌──────────────────────────────────────────────────────────────────────────────┐ +│ LAYER 5 — SEARCH & QUALITY (existing modules, no changes) │ +│ │ +│ accelerators/industrial_tools/cdf_search dashboards/context_quality │ +│ Location filters for scoped search Contextualization coverage │ +│ [existing] metrics and quality reports │ +│ [existing] │ +└──────────────────────────────────────────────────────────────────────────────┘ +``` + +--- + +## Module Specifications + +### 1. `foundation/cdf_foundation` *(New)* + +**Purpose**: Project-scoped infrastructure shared by all modules in this DP. Creates the spaces, datasets, auth groups, and RAW databases that every source system and contextualization module references. Defines the canonical set of template variables used across the entire DP. + +`cdf_foundation` is designed as a strict superset of `accelerators/cdf_common`. It creates all the same resources that `cdf_common` creates — the instance space, function space, ingestion dataset, RAW source database, RAW state database, and state table — using the same variable names so that existing modules (`cdf_file_annotation`, `cdf_entity_matching`, `cdf_connection_sql`, `cdf_ingestion_foundation`) that were written against the `cdf_common` variable contract work without changes. The annotation-specific CDF Function (`contextualization_connection_writer`) and ExtractionPipeline (`ctx_files_direct_relation_write`) from `cdf_common` are not included — those belong to `cdf_file_annotation`. + +On top of what `cdf_common` provides, `cdf_foundation` adds auth groups and a foundation dataset scoped to the deployment. + +**Resources**: + +| Resource | Variable / External ID | Mirrors `cdf_common`? | Purpose | +|---|---|---|---| +| `Space` | `{{ instanceSpace }}` | Yes | Primary instance space for DM data | +| `Space` | `{{ functionSpace }}` | Yes | Space for CDF Function instances | +| `DataSet` | `{{ dataset }}` | Yes | Shared dataset for ingestion resources | +| `DataSet` | `ds_{{location}}_foundation` | No (new) | Dataset for foundational resources | +| `RAW Database` | `{{ rawSourceDatabase }}` | Yes | Source data landing zone | +| `RAW Database` | `{{ rawStateDatabase }}` | Yes | Contextualization state database | +| `RAW Table` | `{{ rawStateDatabase }}.{{ rawStateTable }}` | Yes | State cursor table for annotation/sync jobs | +| `Group` | `grp_{{location}}_admins` | No (new) | Full project access for administrators | +| `Group` | `grp_{{location}}_readonly` | No (new) | Read-only access for viewers | +| `Group` | `grp_{{location}}_extractors` | No (new) | Write access for extractor service accounts | +| `Group` | `grp_{{location}}_functions` | No (new) | Access for CDF Function service accounts | + +**File structure**: +``` +foundation/cdf_foundation/ +├── module.toml +├── default.config.yaml +├── auth/ +│ ├── grp_admins.Group.yaml +│ ├── grp_readonly.Group.yaml +│ ├── grp_extractors.Group.yaml +│ └── grp_functions.Group.yaml +├── data_model/ +│ ├── instances.Space.yaml # {{ instanceSpace }} +│ └── functions.Space.yaml # {{ functionSpace }} +├── data_sets/ +│ ├── ingestion.DataSet.yaml # {{ dataset }} +│ └── foundation.DataSet.yaml # ds_{{location}}_foundation +└── raw/ + ├── source.Database.yaml # {{ rawSourceDatabase }} + ├── state.Database.yaml # {{ rawStateDatabase }} + └── state.Table.yaml # {{ rawStateDatabase }}.{{ rawStateTable }} +``` + +**Configuration variables** (`default.config.yaml`) — variable names intentionally match `cdf_common` defaults for compatibility: + +| Variable | Default | Description | +|---|---|---| +| `location` | *(required)* | Site identifier, e.g. `oslo`, `stavanger` | +| `organization` | *(required)* | Org prefix for view/transformation references | +| `instanceSpace` | `{{location}}_instances` | Instance space for this site's DM data | +| `functionSpace` | `{{location}}_functions` | Space for CDF Function code nodes | +| `dataset` | `ingestion` | Shared dataset for transformations, functions, workflows | +| `rawSourceDatabase` | `ingestion` | RAW DB for source system landed data | +| `rawStateDatabase` | `contextualizationState` | RAW DB for state cursors | +| `rawStateTable` | `diagramParsing` | State table used by annotation and sync jobs | +| `schemaSpace` | `sp_enterprise_process_industry` | Schema space from `qs_enterprise_dm` | +| `annotationSpace` | `{{location}}_instances` | Space where annotation edges are stored | +| `dataModelVersion` | `v1.0` | Data model version for transformation view references | + +**Dependencies**: None + +--- + +### 2. `models/qs_enterprise_dm` *(Existing — no changes)* + +**Purpose**: Enterprise data model providing 39 views across Asset, Equipment, Maintenance, TimeSeries, Files, and 3D. All source system transformations in this DP write into views defined here. + +**Resources** (existing, unchanged): +- 3 Spaces (`sp_enterprise_process_industry`, `sp_enterprise_instance`, `sp_site_instance`) +- 46 Containers, 39 Views +- 2 Data Models (`qs-enterprise`, `qs-enterprise-search`) + +**Dependencies**: None + +--- + +### 3. `sourcesystem/cdf_pi_foundation` *(New)* + +**Purpose**: Ingest PI timeseries metadata from a PI server into CDF RAW via the PI .NET Extractor, then transform the RAW data into `CogniteTimeSeries` data model instances. Ships with a complete, parameterized extractor configuration template sourced from gss-knowledge-base so a field engineer needs only to supply credentials. + +**Resources**: + +| Resource | External ID | Purpose | +|---|---|---| +| `ExtractionPipeline` | `ep_{{location}}_pi` | Pipeline health tracking and config delivery | +| `ExtractionPipeline Config` | *(attached to pipeline)* | PI .NET extractor config template | +| `RAW Database` | `db_{{location}}_pi` | PI tag metadata landing zone | +| `RAW Table` | `db_{{location}}_pi:timeseries` | PI tag name, description, unit, engineering range | +| `Transformation` | `tr_{{location}}_pi_timeseries` | RAW PI tags → `CogniteTimeSeries` DM instances | + +**Extractor config template** (from `gss-knowledge-base/extractors/toolkit_examples/pi_net_extractor/`): + +Key customer-configured parameters: +```yaml +# Supplied via environment variables: +# PI_HOST — PI server hostname or IP +# PI_USER — PI server username +# PI_PASSWORD — PI server password +# COGNITE_BASE_URL, COGNITE_PROJECT, COGNITE_TOKEN_URL +# COGNITE_CLIENT_ID, COGNITE_CLIENT_SECRET +# +# Template-resolved at deploy time: +# extraction-pipeline.external-id: ep_{{location}}_pi +# data-modeling.space: {{instanceSpace}} +# destination.dataset-external-id: {{dataSet}} +# id-prefix: pi: +``` + +**Transformation notes**: +- Maps PI tag name → `externalId` with `pi:` prefix +- Writes to `CogniteTimeSeries` view in `{{instanceSpace}}` +- `sysTagsFound` is populated by default (opt-out via `populateSysTagsFound: false` in `default.config.yaml`) to maintain downstream contextualization compatibility + +**File structure**: +``` +sourcesystem/cdf_pi_foundation/ +├── module.toml +├── default.config.yaml +├── extraction_pipelines/ +│ ├── ep_pi.ExtractionPipeline.yaml +│ └── ep_pi.ExtractionPipeline.Config.yaml +├── raw/ +│ └── db_pi.Database.yaml +└── transformations/ + └── tr_pi_timeseries.Transformation.yaml +``` + +**Configuration variables**: + +| Variable | Default | Description | +|---|---|---| +| `location` | *(inherited)* | Site identifier | +| `piIdPrefix` | `pi:` | External ID prefix for PI timeseries | +| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | + +**Environment variables required**: +- `PI_HOST`, `PI_USER`, `PI_PASSWORD` +- Standard CDF auth vars + +**Dependencies**: `foundation/cdf_foundation` + +--- + +### 4. `sourcesystem/cdf_opcua_foundation` *(New)* + +**Purpose**: Ingest OPC-UA node metadata via the OPC-UA Extractor into CDF RAW, then transform into `CogniteTimeSeries` data model instances. Follows the same RAW → Transformation pattern as PI and SAP for consistency and auditability. Ships with a complete, parameterized extractor configuration template sourced from gss-knowledge-base. + +**Resources**: + +| Resource | External ID | Purpose | +|---|---|---| +| `ExtractionPipeline` | `ep_{{location}}_opcua` | Pipeline health tracking and config delivery | +| `ExtractionPipeline Config` | *(attached to pipeline)* | OPC-UA extractor config template | +| `RAW Database` | `db_{{location}}_opcua` | OPC-UA node metadata landing zone | +| `RAW Table` | `db_{{location}}_opcua:nodes` | OPC-UA variable nodes: name, description, data type, EU range | +| `Transformation` | `tr_{{location}}_opcua_timeseries` | RAW OPC-UA nodes → `CogniteTimeSeries` DM instances | + +**Extractor config template** (from `gss-knowledge-base/extractors/toolkit_examples/opcua_extractor_speira_quickstart/`): + +Key customer-configured parameters: +```yaml +# Supplied via environment variables: +# OPCUA_ENDPOINT_URL — e.g. opc.tcp://192.168.1.10:4840 +# OPCUA_USER — OPC-UA server username +# OPCUA_PASSWORD — OPC-UA server password +# COGNITE_BASE_URL, COGNITE_PROJECT, COGNITE_TOKEN_URL +# COGNITE_CLIENT_ID, COGNITE_CLIENT_SECRET +# +# Template-resolved at deploy time: +# extraction-pipeline.external-id: ep_{{location}}_opcua +# destination.raw.database: db_{{location}}_opcua +# destination.raw.table: nodes +# id-prefix: opcua: +# +# Site-specific (documented as commented examples in config): +# source.node-filter.allow / deny lists — OPC-UA node ID patterns to include/exclude +# source.browse-throttling — max-per-minute, max-parallelism +# source.publishing-interval — default 5000 ms +# source.sampling-interval — default 5000 ms +``` + +**Transformation notes**: +- OPC-UA extractor writes node metadata to `db_{{location}}_opcua:nodes` (RAW) +- Transformation reads RAW and maps to `CogniteTimeSeries` view in `{{instanceSpace}}` +- External ID: `opcua:` +- `sysTagsFound` opt-out behavior same as PI module + +**File structure**: +``` +sourcesystem/cdf_opcua_foundation/ +├── module.toml +├── default.config.yaml +├── extraction_pipelines/ +│ ├── ep_opcua.ExtractionPipeline.yaml +│ └── ep_opcua.ExtractionPipeline.Config.yaml +├── raw/ +│ └── db_opcua.Database.yaml +└── transformations/ + └── tr_opcua_timeseries.Transformation.yaml +``` + +**Configuration variables**: + +| Variable | Default | Description | +|---|---|---| +| `location` | *(inherited)* | Site identifier | +| `opcuaIdPrefix` | `opcua:` | External ID prefix for OPC-UA timeseries | +| `opcuaPublishingInterval` | `5000` | OPC-UA publishing interval in ms | +| `opcuaSamplingInterval` | `5000` | OPC-UA sampling interval in ms | +| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | + +**Environment variables required**: +- `OPCUA_ENDPOINT_URL`, `OPCUA_USER`, `OPCUA_PASSWORD` +- Standard CDF auth vars + +**Dependencies**: `foundation/cdf_foundation` + +--- + +### 5. `sourcesystem/cdf_sap_foundation` *(New)* + +**Purpose**: Ingest SAP functional locations, equipment master records, maintenance orders, and work operations into CDF RAW via the SAP OData Extractor, then transform into the enterprise data model. Consolidates what would otherwise be separate asset and events modules into a single cohesive SAP source system module — since both share the same extractor, authentication, and data model target. + +Ships with a complete SAP OData extractor configuration template sourced from gss-knowledge-base with single-plant default and multi-plant expansion support via a plant list variable. + +**Resources**: + +| Resource | External ID | Purpose | +|---|---|---| +| `ExtractionPipeline` | `ep_{{location}}_sap` | Pipeline health tracking and config delivery | +| `ExtractionPipeline Config` | *(attached to pipeline)* | SAP OData extractor config template | +| `RAW Database` | `db_{{location}}_sap` | SAP data landing zone | +| `RAW Table` | `db_{{location}}_sap:equipment` | SAP equipment master records | +| `RAW Table` | `db_{{location}}_sap:functional_location` | SAP functional location hierarchy | +| `RAW Table` | `db_{{location}}_sap:workorder` | SAP work orders (PM orders) | +| `RAW Table` | `db_{{location}}_sap:workpackage` | SAP work packages | +| `RAW Table` | `db_{{location}}_sap:worktask` | SAP work tasks (operations) | +| `RAW Table` | `db_{{location}}_sap:workitem` | SAP work items (sub-operations) | +| `RAW Table` | `db_{{location}}_sap:state_store` | OData extractor delta state (cursor tracking) | +| `Transformation` | `tr_{{location}}_sap_assets` | Functional locations → `Asset` DM instances | +| `Transformation` | `tr_{{location}}_sap_equipment` | Equipment master → `Equipment` DM instances | +| `Transformation` | `tr_{{location}}_sap_equipment_to_asset` | Equipment → Asset edge relationships | +| `Transformation` | `tr_{{location}}_sap_maintenance_orders` | Work orders → `MaintenanceOrder` DM instances | +| `Transformation` | `tr_{{location}}_sap_operations` | Work tasks/items → `Operation` DM instances | +| `Transformation` | `tr_{{location}}_sap_operation_to_order` | Operation → MaintenanceOrder edge relationships | + +**Extractor config template** (from `gss-knowledge-base/extractors/toolkit_examples/sap_odata_extractor_remote/`): + +Key customer-configured parameters: +```yaml +# Supplied via environment variables: +# SAP_GATEWAY_URL — SAP NW Gateway base URL +# SAP_CLIENT — SAP client number +# SAP_USERNAME — SAP OData service user +# SAP_PASSWORD — SAP OData service password +# COGNITE_BASE_URL, COGNITE_PROJECT, COGNITE_TOKEN_URL +# COGNITE_CLIENT_ID, COGNITE_CLIENT_SECRET +# +# Template-resolved at deploy time: +# extraction-pipeline.external-id: ep_{{location}}_sap +# state-store.raw.database: db_{{location}}_sap +# state-store.raw.table: state_store +# +# Single-plant default (sapPlant: "1000"): +# Each endpoint targets db_{{location}}_sap with table names as above. +# +# Multi-plant expansion (sapPlants: ["1000", "2000", "3000"]): +# Additional per-plant RAW databases are generated: db_{{location}}_sap_{{plant}} +# Each plant gets its own endpoint entries for Equipment, FunctionalLocation, etc. +# Transformations union across plants using the sapPlants list variable. +# +# Endpoints configured (schedules are per-endpoint, default weekly cron): +# EquipmentListSet, FunclocListSet, ExHeaderSet (work orders), +# ExOlistSet (operations), ExOperationsSet (items), ExNotifheader (notifications) +``` + +**Multi-plant behavior**: +- Default: `sapPlant: "1000"` → single RAW database, standard table names +- Multi-plant: `sapPlants: ["1000", "2000", "3000"]` → extractor config expands per plant, transformations use a `UNION ALL` pattern across plant-prefixed tables + +**Transformation notes**: +- All SQL uses `{{location}}`, `{{organization}}`, `{{sapSystem}}`, `{{instanceSpace}}`, `{{schemaSpace}}` variables — no hardcoded site names +- `sysTagsFound` populated on `MaintenanceOrder` for downstream connection compatibility (opt-out via `populateSysTagsFound: false`) + +**File structure**: +``` +sourcesystem/cdf_sap_foundation/ +├── module.toml +├── default.config.yaml +├── extraction_pipelines/ +│ ├── ep_sap.ExtractionPipeline.yaml +│ └── ep_sap.ExtractionPipeline.Config.yaml +├── raw/ +│ └── db_sap.Database.yaml +└── transformations/ + ├── tr_sap_assets.Transformation.yaml + ├── tr_sap_equipment.Transformation.yaml + ├── tr_sap_equipment_to_asset.Transformation.yaml + ├── tr_sap_maintenance_orders.Transformation.yaml + ├── tr_sap_operations.Transformation.yaml + └── tr_sap_operation_to_order.Transformation.yaml +``` + +**Configuration variables**: + +| Variable | Default | Description | +|---|---|---| +| `location` | *(inherited)* | Site identifier | +| `organization` | *(inherited)* | Org prefix for view references | +| `sapSystem` | `s4hana` | SAP system label, used in external IDs | +| `sapPlant` | `1000` | Default single-plant code | +| `sapPlants` | `[]` | Override with a list for multi-plant expansion, e.g. `["1000","2000"]` | +| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | + +**Environment variables required**: +- `SAP_GATEWAY_URL`, `SAP_CLIENT`, `SAP_USERNAME`, `SAP_PASSWORD` +- Standard CDF auth vars + +**Dependencies**: `foundation/cdf_foundation` + +--- + +### 6. `foundation/cdf_ingestion_foundation` *(New)* + +**Purpose**: A source-agnostic, two-phase ingestion workflow that orchestrates population and contextualization transformations. Each transformation task in the workflow is referenced via a named variable in `default.config.yaml`. Deploying a new source system or wiring in a new contextualization transformation means updating a variable value — the workflow YAML structure does not change. + +**Design**: + +The CDF Toolkit does not support foreach/list iteration in YAML — variables are simple value substitutions, not list expansions. The workflow therefore follows the same pattern as the existing `cdf_ingestion` module: each transformation task is a named variable. The key difference is that all variable defaults use `{{location}}`-prefixed external IDs (matching the foundation source system modules), grouping is clearly separated into population vs contextualization phases in `default.config.yaml`, and OPC-UA is included as a first-class optional task. + +The workflow has two sequential phases: + +1. **Population phase** — loads data from RAW into DM instances. Tasks run in parallel. +2. **Contextualization phase** — builds relationships between DM instances. Runs only after the entire population phase succeeds. Tasks run in parallel. + +Any task failure aborts the workflow (`onFailure: abortWorkflow`). + +**Resources**: + +| Resource | External ID | Purpose | +|---|---|---| +| `Workflow` | `wf_{{location}}_ingestion` | Orchestrates population → contextualization | +| `WorkflowVersion` | `wf_{{location}}_ingestion/v1` | Active version with task graph | +| `WorkflowTrigger` | `wf_{{location}}_ingestion_trigger` | Scheduled execution (configurable cron) | +| `Group` | `grp_{{location}}_workflow` | Service account group for workflow execution | +| `Group` | `grp_{{location}}_workflow_user` | User group for manual workflow execution | + +**`default.config.yaml`**: + +```yaml +workflow: "wf_{{location}}_ingestion" +workflowSchedule: "0 2 * * *" # daily at 02:00 UTC; set to "0 0 29 2 *" to disable auto-run + +# ----------------------------------------------------------------- +# Population phase — source system transformations +# Set each value to the external ID of the deployed transformation. +# ----------------------------------------------------------------- +piTimeseriesTransformationExternalId: "tr_{{location}}_pi_timeseries" +opcuaTimeseriesTransformationExternalId: "tr_{{location}}_opcua_timeseries" +sapAssetsTransformationExternalId: "tr_{{location}}_sap_assets" +sapEquipmentTransformationExternalId: "tr_{{location}}_sap_equipment" +sapEquipmentToAssetTransformationExternalId: "tr_{{location}}_sap_equipment_to_asset" +sapMaintenanceOrdersTransformationExternalId: "tr_{{location}}_sap_maintenance_orders" +sapOperationsTransformationExternalId: "tr_{{location}}_sap_operations" +sapOperationToOrderTransformationExternalId: "tr_{{location}}_sap_operation_to_order" + +# ----------------------------------------------------------------- +# Contextualization phase — SQL connection transformations +# Uncomment and set when cdf_connection_sql is deployed. +# ----------------------------------------------------------------- +maintenanceOrderToAssetTransformationExternalId: "maintenance_order_to_asset" +operationToAssetTransformationExternalId: "operation_to_asset" +timeSeriesToEquipmentTransformationExternalId: "timeseries_to_equipment" +activityToTimeSeriesTransformationExternalId: "activity_to_timeseries" +``` + +**`workflows/v1.WorkflowVersion.yaml`** (representative structure): + +```yaml +workflowExternalId: "{{ workflow }}" +version: v1 +workflowDefinition: + tasks: + # ── Population phase ───────────────────────────────────────── + # PI, OPC-UA, and SAP population tasks run in parallel + - externalId: "{{ piTimeseriesTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ piTimeseriesTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + + - externalId: "{{ opcuaTimeseriesTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ opcuaTimeseriesTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + + - externalId: "{{ sapAssetsTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ sapAssetsTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + + - externalId: "{{ sapEquipmentTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ sapEquipmentTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + + - externalId: "{{ sapEquipmentToAssetTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ sapEquipmentToAssetTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + dependsOn: + - externalId: "{{ sapAssetsTransformationExternalId }}" + - externalId: "{{ sapEquipmentTransformationExternalId }}" + + - externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + + - externalId: "{{ sapOperationsTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ sapOperationsTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + + - externalId: "{{ sapOperationToOrderTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ sapOperationToOrderTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + dependsOn: + - externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" + - externalId: "{{ sapOperationsTransformationExternalId }}" + + # ── Contextualization phase ─────────────────────────────────── + # Runs only after all population tasks complete successfully + - externalId: "{{ maintenanceOrderToAssetTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ maintenanceOrderToAssetTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + dependsOn: + - externalId: "{{ sapAssetsTransformationExternalId }}" + - externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" + - externalId: "{{ sapOperationsTransformationExternalId }}" + - externalId: "{{ sapOperationToOrderTransformationExternalId }}" + + - externalId: "{{ timeSeriesToEquipmentTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ timeSeriesToEquipmentTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + dependsOn: + - externalId: "{{ piTimeseriesTransformationExternalId }}" + - externalId: "{{ opcuaTimeseriesTransformationExternalId }}" + - externalId: "{{ sapEquipmentTransformationExternalId }}" + - externalId: "{{ sapEquipmentToAssetTransformationExternalId }}" + + - externalId: "{{ activityToTimeSeriesTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ activityToTimeSeriesTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + dependsOn: + - externalId: "{{ piTimeseriesTransformationExternalId }}" + - externalId: "{{ opcuaTimeseriesTransformationExternalId }}" + - externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" + - externalId: "{{ sapOperationToOrderTransformationExternalId }}" + + - externalId: "{{ operationToAssetTransformationExternalId }}" + type: transformation + parameters: + transformation: + externalId: "{{ operationToAssetTransformationExternalId }}" + concurrencyPolicy: fail + onFailure: abortWorkflow + dependsOn: + - externalId: "{{ sapAssetsTransformationExternalId }}" + - externalId: "{{ sapEquipmentTransformationExternalId }}" + - externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" + - externalId: "{{ sapOperationsTransformationExternalId }}" + - externalId: "{{ sapEquipmentToAssetTransformationExternalId }}" + - externalId: "{{ sapOperationToOrderTransformationExternalId }}" +``` + +> **Adding a new source system**: Add the new transformation external ID as a new named variable in `default.config.yaml`, add a new task entry in the WorkflowVersion YAML referencing that variable, and set any `dependsOn` entries needed. The existing task graph is unchanged. + +**File structure**: +``` +foundation/cdf_ingestion_foundation/ +├── module.toml +├── default.config.yaml +├── auth/ +│ ├── grp_workflow.Group.yaml +│ └── grp_workflow_user.Group.yaml +└── workflows/ + ├── wf_ingestion.Workflow.yaml + ├── wf_ingestion_v1.WorkflowVersion.yaml + └── wf_ingestion_trigger.WorkflowTrigger.yaml +``` + +**Dependencies**: `foundation/cdf_foundation`. Source system and contextualization modules must be deployed before the workflow is triggered. + +--- + +### 7. `accelerators/contextualization/cdf_file_annotation` *(Existing — no changes)* + +**Purpose**: P&ID and engineering document annotation using the Diagram Detect API. Discovers files, submits annotation jobs, processes results, and builds CogniteFile → CogniteAsset/Equipment edges. Includes pattern-based promotion and a Streamlit dashboard. + +**Resources** (existing): 4 CDF Functions, 1 Workflow, 6 RAW tables, 1 Extraction Pipeline, 1 Dataset, 1 data model for annotation state. + +**Dependencies**: `accelerators/cdf_common` (spaces, datasets) — this dependency is met by deploying `foundation/cdf_foundation` which provides equivalent infrastructure under the same variable contract. + +--- + +### 8. `accelerators/contextualization/cdf_entity_matching` *(Existing — no changes)* + +**Purpose**: AI-powered and rule-based timeseries-to-asset matching. Uses multi-method matching (rule-based + ML + manual expert mappings) to link `CogniteTimeSeries` instances to `Asset`/`Equipment` DM instances. + +**Resources** (existing): 2 CDF Functions, 1 Workflow, 5 RAW tables, 1 Extraction Pipeline. + +**Dependencies**: `accelerators/cdf_common` (spaces, datasets). + +--- + +### 9. `accelerators/contextualization/cdf_connection_sql` *(Existing — no changes)* + +**Purpose**: SQL-based relationship builder that creates edges between DM instances using `sysTagsFound` populated by source system transformations. Links timeseries to equipment, maintenance orders to assets, and operations to assets. + +**Resources** (existing): 4 SQL Transformations. + +**Dependencies**: Source system transformations must have run first and populated `sysTagsFound`. Relies on `{{instanceSpace}}` and `{{schemaSpace}}` variables from `cdf_foundation`. + +--- + +### 10. `accelerators/industrial_tools/cdf_search` *(Existing — no changes)* + +**Purpose**: Configures location-scoped filters for CDF Search, scoped to the site's instance space and linked to the process industry data model. + +**Resources** (existing): 1 Location Filter. + +**Dependencies**: `models/qs_enterprise_dm` (data model space). + +--- + +### 11. `dashboards/context_quality` *(Existing — no changes)* + +**Purpose**: Contextualization quality dashboard showing coverage metrics: how many timeseries, assets, equipment, files, and maintenance orders have been successfully contextualized. + +**Resources** (existing): +- `DataSet`: `context_quality_apps` — created by this module +- `Function`: `context_quality_handler` — computes contextualization metrics by querying the CDF API at runtime +- `Streamlit`: `context_quality_dashboard` — interactive quality dashboard + +**Dependency analysis**: The module has no hard structural dependencies on specific RAW tables or data model spaces from other modules. The CDF Function queries the live CDF API (DM instances, timeseries, assets) to compute metrics — it does not join against a predetermined set of RAW tables. The function YAML references `space: context_quality`, which is the module's own space for storing the function code node (a `DATA_MODELING_ONLY` mode requirement), not a runtime data dependency on another module's space. + +This means the module deploys and operates independently. It will display meaningful metrics as soon as source system transformations have run and DM instances exist. No structural changes are needed to use it in this DP. + +--- + +## Configuration Variables — Consolidated Reference + +Variables are defined once — in `foundation/cdf_foundation/default.config.yaml` — and flow to every other module via the shared variable contract. No module hardcodes a site name or space identifier. + +| Variable | Owner | Consumed by | +|---|---|---| +| `location` | `cdf_foundation` | All modules — used in every external ID and RAW database name | +| `organization` | `cdf_foundation` | `cdf_sap_foundation`, all transformation SQL view references | +| `schemaSpace` | `cdf_foundation` | All source system transformations (DM view lookup) | +| `instanceSpace` | `cdf_foundation` | All source system transformations (DM instance write target) | +| `dataSet` | `cdf_foundation` | All source system extraction pipelines and transformations | +| `dataModelVersion` | `cdf_foundation` | All transformation view references | +| `populateSysTagsFound` | Per source module | Source system transformations; set `false` to omit the field | +| `populationTasks` | `cdf_ingestion_foundation` | Workflow task graph generation | +| `contextualizationTasks` | `cdf_ingestion_foundation` | Workflow task graph generation | +| `sapPlant` / `sapPlants` | `cdf_sap_foundation` | SAP extractor config and transformation UNION logic | + +--- + +## Resource Summary + +| Module | Status | Spaces | Datasets | RAW DBs | RAW Tables | Transformations | Workflows | Pipelines | Groups | +|---|---|---|---|---|---|---|---|---|---| +| `foundation/cdf_foundation` | New | 2 | 2 | 1 | 0 | 0 | 0 | 0 | 4 | +| `models/qs_enterprise_dm` | Existing | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| `sourcesystem/cdf_pi_foundation` | New | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | +| `sourcesystem/cdf_opcua_foundation` | New | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | +| `sourcesystem/cdf_sap_foundation` | New | 0 | 0 | 1 | 7 | 6 | 0 | 1 | 0 | +| `foundation/cdf_ingestion_foundation` | New | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | +| `cdf_file_annotation` | Existing | 0 | 1 | 6 | 6 | 0 | 1 | 1 | 0 | +| `cdf_entity_matching` | Existing | 0 | 0 | 0 | 5 | 0 | 1 | 1 | 0 | +| `cdf_connection_sql` | Existing | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | +| `cdf_search` | Existing | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| `dashboards/context_quality` | Existing | 0 | 1 | 1 | — | — | 1 | 0 | 0 | +| **Total (new modules only)** | | **5** | **2** | **4** | **9** | **8** | **1** | **3** | **5** | + +--- + +## Release Phases + +### P0 — v1: Foundational Deployment + +**Goal**: A DE can deploy a complete, real industrial CDF project from scratch using this DP — source system extraction, data model, orchestration, and contextualization — without consulting gss-knowledge-base or assembling boilerplate manually. + +| Deliverable | Modules | +|---|---| +| Core project infrastructure | `foundation/cdf_foundation` | +| Enterprise data model | `models/qs_enterprise_dm` | +| PI timeseries ingestion | `sourcesystem/cdf_pi_foundation` | +| OPC-UA timeseries ingestion | `sourcesystem/cdf_opcua_foundation` | +| SAP asset + maintenance ingestion | `sourcesystem/cdf_sap_foundation` | +| Modular ingestion orchestration | `foundation/cdf_ingestion_foundation` | +| P&ID file annotation | `accelerators/contextualization/cdf_file_annotation` *(existing)* | +| Entity matching | `accelerators/contextualization/cdf_entity_matching` *(existing)* | +| SQL-based connections | `accelerators/contextualization/cdf_connection_sql` *(existing)* | +| Contextualization quality dashboard | `dashboards/context_quality` *(existing)* | +| Scoped search filters | `accelerators/industrial_tools/cdf_search` *(existing)* | + +### P1 — v2: Quality and Testing + +**Goal**: Deployments are verifiable. A DE can confirm that transformations produce correct output before handing a project to a customer. + +| Deliverable | Notes | +|---|---| +| Transformation unit test framework | Test harness that validates SQL transformation output against known-good fixtures | +| Document source module (`cdf_documents_foundation`) | Generic file ingestion replacing the SharePoint-specific module | +| Multi-plant SAP validation | Verified multi-plant expansion via `sapPlants` list variable | + +### P2 — v3: AI and Extended Source Systems + +**Goal**: The foundation DP becomes the entry point for AI-augmented industrial workflows and a broader set of source systems. + +| Deliverable | Notes | +|---|---| +| Atlas AI integration (`dp:atlas_ai`) | OOTB agents layered on top of the foundation data model | +| Additional source systems | Maximo, Meridium, or other CMMS as `sourcesystem/cdf__foundation` modules | +| Automated quality checks | Scheduled data quality assertions beyond contextualization coverage | +| PI Asset Framework (AF) support | Hierarchy ingestion from PI AF as an extension module | + +--- + +## Risks and Dependencies + +### Team and Repository Dependencies + +| Dependency | Risk | Mitigation | +|---|---|---| +| **`library` repo** (this repo) | All new modules land here; merge conflicts if other teams are actively developing in `modules/` | Coordinate with module owners; use feature branches per module | +| **`gss-knowledge-base` repo** | Extractor config templates are sourced from here; changes there may need to be reflected in the DP | Pin to a specific commit or tag at release time; document the source commit in module READMEs | +| **`qs_enterprise_dm` data model** | All source system transformations reference views in this data model. A view rename or property removal in a future `qs_enterprise_dm` version will break the foundation transformations without a coordinated update | Transformation SQL should reference the model via the `{{dataModelVersion}}` variable; bump the variable when upgrading; pin the model version used in v1 explicitly | +| **CDF Toolkit version** | Module YAML syntax, WorkflowVersion schema, and variable substitution behaviour are Toolkit-version-dependent. A Toolkit major version bump may require YAML updates | Document the minimum supported Toolkit version in `module.toml`; test against the pinned version in CI | +| **CDF Workflows API** | The ingestion workflow uses the Workflows API (GA). Behaviour changes to `concurrencyPolicy`, `onFailure`, or task types would require workflow YAML updates | Monitor CDF release notes; the two-phase task graph is relatively simple and low-risk | + +### Known Technical Risks + +| Risk | Likelihood | Impact | Mitigation | +|---|---|---|---| +| **PI extractor config drift across PI versions** | Medium | Medium | The PI .NET Extractor config schema changes between major versions (e.g., v2.x → v3.x renamed several keys). The config template must document which extractor version it targets; field engineers must verify compatibility before deploying against older PI servers. | +| **SAP OData endpoint variability** | Medium | High | SAP NW Gateway services and entity names differ between SAP versions and customer configurations. The extractor config template provides the common entity set (equipment, functional locations, work orders) but customers may need to adjust service names and key fields for their specific SAP landscape. | +| **OPC-UA node filter requirements** | High | Low | OPC-UA node structure is highly site-specific. The extractor config template ships with commented-out example filters. Without correct filters, the extractor will browse the full OPC-UA server tree, which may be very large and slow. DEs must configure filters before production use — this should be explicitly documented. | +| **`cdf_foundation` vs `cdf_common` variable conflict** | Low | High | If an existing module is deployed with `cdf_common` and then `cdf_foundation` is introduced in the same project, and the variable values differ (e.g., different `instanceSpace` defaults), resources may be duplicated or point to the wrong space. The two modules should not be deployed together in the same project. | +| **Optional workflow tasks referencing non-existent transformations** | High | Medium | CDF Workflows will fail at runtime if a task references a transformation external ID that does not exist. If a customer deploys only PI (no SAP), the workflow will fail on SAP task references. This must be resolved before v1 ships — see Open Questions. | + +--- + +## Open Questions + +### Q1 — Optional source system tasks in the ingestion workflow *(must resolve before v1)* + +If a customer deploys only PI (no OPC-UA, no SAP), the WorkflowVersion YAML will still reference OPC-UA and SAP transformation external IDs. CDF Workflows fails at runtime if any referenced transformation does not exist. + +**Options**: + +| Option | Pros | Cons | +|---|---|---| +| **(a) Require all referenced transformations** — document as a hard deploy prerequisite | Simple, no additional tooling | Forces customers to deploy unused source system modules just to satisfy the workflow | +| **(b) Dynamic task generation** — a CDF Function checks which transformations exist at runtime and emits only those as dynamic tasks | True modularity; workflow adapts to what's deployed | Adds a Function dependency to the orchestration layer; more complex to debug | +| **(c) Multiple WorkflowVersion templates** — ship templates for common combinations (PI-only, SAP-only, PI+SAP, PI+OPC-UA+SAP) | Simple YAML, no runtime logic | Combinatorial explosion as source systems increase; violates the "add a variable, not a file" principle | + +**Recommendation**: Option (b) is the right long-term answer but adds scope. For v1, implement option (c) with the full combination as the default and document option (b) as the v2 target. Needs a decision before implementation starts. + +--- + +### Q2 — `cdf_sap_foundation`: merged module vs separate assets and events *(decided, documenting trade-off)* + +**Decision**: Merge `cdf_sap_assets` and `cdf_sap_events` concerns into a single `cdf_sap_foundation` module. + +**Trade-off**: + +| | Merged (`cdf_sap_foundation`) | Split (`cdf_sap_assets_foundation` + `cdf_sap_events_foundation`) | +|---|---|---| +| **Extractor config** | One extractor config, one extraction pipeline — SAP OData targets all entity types | Two configs — possible if different schedules or auth are needed per entity group | +| **Deployment atomicity** | Deploy SAP as one unit — assets and events always go together | Can deploy asset hierarchy without maintenance data (useful in early-stage projects) | +| **Module count** | Simpler; fewer modules to manage | More granular control | +| **Auth** | Single service account for all SAP entities | Could scope credentials separately per entity group | + +The merged approach is preferred because: (a) in practice, assets and maintenance orders are always needed together for meaningful contextualization; (b) the SAP OData extractor is typically configured with a single connection to the NW Gateway covering all entity types; (c) fewer modules reduces cognitive overhead for field engineers. If a customer needs to separate schedules, they can configure per-endpoint cron expressions within the single extractor config. + +--- + +### Q3 — `cdf_file_annotation` dependency on `cdf_common` *(verify before v1)* + +`cdf_file_annotation` was written against the `cdf_common` variable contract. Verify that `cdf_foundation`'s variable defaults (particularly `functionSpace: {{location}}_functions`) are compatible with the values `cdf_file_annotation` expects. If `cdf_file_annotation`'s `module.toml` declares a hard dependency on `cdf_common`, a compatibility shim or a `module.toml` update in `cdf_file_annotation` may be needed. + +--- + +### Q4 — Minimum supported CDF Toolkit version *(must document before v1)* + +The WorkflowVersion YAML schema and variable substitution syntax are Toolkit-version-dependent. The minimum Toolkit version that supports all resource types used in this DP (Workflows, WorkflowTrigger, ExtractionPipeline Config, Space, etc.) must be identified and pinned in each module's `module.toml`. This is a blocking prerequisite for CI validation. + +--- + +## Success Metrics + +### Deployment health (binary checks) + +- `dp:foundation` deploys cleanly to a brand-new CDF project with no prior resources and no errors. +- Each source system module (`cdf_pi_foundation`, `cdf_opcua_foundation`, `cdf_sap_foundation`) deploys independently when the others are absent. +- All transformation SQL and resource external IDs contain zero hardcoded site names or space identifiers — every location-specific value is a template variable. +- Existing contextualization modules (`cdf_file_annotation`, `cdf_entity_matching`, `cdf_connection_sql`) deploy alongside the new foundation modules with no changes to their files. + +### Field engineer experience (outcome-based) + +- **Extractor readiness**: A field engineer with CDF credentials and source system credentials can configure and run the PI, OPC-UA, or SAP extractor using only the config template shipped in the module — without consulting gss-knowledge-base or requesting help from another team member. +- **Time to first data in CDF**: A DE starting from a blank, provisioned CDF project can have timeseries and asset data flowing into the data model within **one working day** of deploying `dp:foundation` with a single source system. +- **Time to end-to-end deployment**: A DE deploying all three source systems (PI + OPC-UA + SAP) plus contextualization on a new customer project can complete the deployment within **two working days**. + +### Scalability (structural checks) + +- Adding a fourth source system to an existing deployment requires: (a) deploying one new module and (b) updating one variable in `cdf_ingestion_foundation/default.config.yaml` — no existing module files are modified. +- Deploying the same DP to a second site (different `location` value) requires only a new variable file — all module YAML is reused as-is. From 6bfe7b0fc8d39ce33ef9c19ab340503a5b0b86a3 Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Thu, 9 Apr 2026 17:05:22 +0530 Subject: [PATCH 02/18] PRD update --- PRD.md | 694 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 348 insertions(+), 346 deletions(-) diff --git a/PRD.md b/PRD.md index 4da9b54d..80c2242d 100644 --- a/PRD.md +++ b/PRD.md @@ -12,13 +12,13 @@ Every module is independently deployable. The package supports `canCherryPick = ### Who is this for? -The primary users of `dp:foundation` are **Deployment Engineers (DEs)** and **Cognite partners** who are responsible for standing up CDF environments for industrial customers. Secondary users are **Solutions Architects** who define the project structure before a DE takes over, and — in more self-serve engagements — **technically capable customers** who own their own CDF configuration. +The primary users of `dp:foundation` are **Data Engineers (DEs)** and **Cognite partners** who are responsible for standing up CDF environments for industrial customers. Secondary users are **Solutions Architects** who define the project structure before a DE takes over, and — in more self-serve engagements — **technically capable customers** who own their own CDF configuration. ### What is the pain today? When a DE starts a new CDF project, there is no authoritative, reusable starting point that covers the full stack. The options available today each have gaps: -- **`dp:quickstart`** is demo-oriented — it ships synthetic data and pre-configured connections that are tightly coupled to a fictional "Springfield" site. Removing synthetic data, renaming locations, or swapping a source system requires touching files across multiple modules. It is not designed to evolve into a production deployment. +- `**dp:quickstart`** is demo-oriented — it ships synthetic data and pre-configured connections that are tightly coupled to a fictional "Springfield" site. Removing synthetic data, renaming locations, or swapping a source system requires touching files across multiple modules. It is not designed to evolve into a production deployment. - **Blank-slate projects** (no DP) require DEs to assemble spaces, datasets, groups, extractor configs, transformations, and orchestration from scratch on every engagement. This leads to inconsistent project structures, configuration drift, and undocumented decisions. - **gss-knowledge-base** contains mature extractor configuration templates (PI, OPC-UA, SAP) but they are not wired into any deployable DP — DEs must manually locate, copy, and adapt them per project. @@ -49,27 +49,31 @@ The result is that each new deployment is partially reinvented, slowing delivery The following are deliberately out of scope for the initial release. Excluding them keeps v1 focused and deliverable; they are candidates for later phases. -| Excluded | Rationale | -|---|---| -| **Maximo, Meridium, other CMMS** | SAP is the most common asset/maintenance source system in the target segment. Additional CMMS sources are P2+ work. | -| **OSIsoft PI Asset Framework (AF)** | `cdf_pi_foundation` covers the PI Data Archive (timeseries) via the PI .NET Extractor. PI AF hierarchy ingestion requires a separate extractor and transformation pattern; not in v1. | -| **SAP PM via IDoc / RFC** | The SAP OData extractor pattern is the primary integration. IDoc and RFC-based extractions require different tooling and are not covered. | -| **OPC-UA Historical Access (HDA)** | The OPC-UA module covers live/subscribed data. Historical data backfill via HDA is a separate configuration concern; left as a documented extension pattern. | -| **OOTB (Out-of-the-Box) Cognite project setup** | `dp:foundation` does not configure IDP, project creation, or network connectivity. It assumes a provisioned CDF project with IDP authentication already in place. | -| **Atlas AI / OOTB Agents** | AI agent deployment (`dp:atlas_ai`) is a P2 concern layered on top of a working foundation. | -| **Automated transformation unit tests** | A testing framework for verifying transformation SQL output is a P1 concern. | -| **Multi-tenant or multi-project federation** | Each deployment of `dp:foundation` targets a single CDF project. Cross-project data federation is out of scope. | -| **Sharepoint / document source system** | File ingestion from SharePoint is not included in v1. A generic `cdf_documents_foundation` module is a P1 candidate. | + +| Excluded | Rationale | +| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Maximo, Meridium, other CMMS** | SAP is the most common asset/maintenance source system in the target segment. Additional CMMS sources are P2+ work. | +| **OSIsoft PI Asset Framework (AF)** | `cdf_pi_foundation` covers the PI Data Archive (timeseries) via the PI .NET Extractor. PI AF hierarchy ingestion requires a separate extractor and transformation pattern; not in v1. | +| **SAP PM via IDoc / RFC** | The SAP OData extractor pattern is the primary integration. IDoc and RFC-based extractions require different tooling and are not covered. | +| **OPC-UA Historical Access (HDA)** | The OPC-UA module covers live/subscribed data. Historical data backfill via HDA is a separate configuration concern; left as a documented extension pattern. | +| **OOTB (Out-of-the-Box) Cognite project setup** | `dp:foundation` does not configure IDP, project creation, or network connectivity. It assumes a provisioned CDF project with IDP authentication already in place. | +| **Atlas AI / OOTB Agents** | AI agent deployment (`dp:atlas_ai`) is a P2 concern layered on top of a working foundation. | +| **Automated transformation unit tests** | A testing framework for verifying transformation SQL output is a P1 concern. | +| **Multi-tenant or multi-project federation** | Each deployment of `dp:foundation` targets a single CDF project. Cross-project data federation is out of scope. | +| **Sharepoint / document source system** | File ingestion from SharePoint is not included in v1. A generic `cdf_documents_foundation` module is a P1 candidate. | + --- ## Target Users -| Persona | How this DP helps | -|---|---| -| **Field Engineers** setting up a new customer project | Drop-in extractor config templates (PI, OPC-UA, SAP) with all required parameters pre-documented; fill in credentials and run | + +| Persona | How this DP helps | +| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| **Field Engineers** setting up a new customer project | Drop-in extractor config templates (PI, OPC-UA, SAP) with all required parameters pre-documented; fill in credentials and run | | **Solutions Architects** designing a scalable CDF project | Modular structure grows by adding modules, not by forking; shared variable contract means location-specific config lives in one place | -| **Customers** deploying CDF for the first time | Clear, layered architecture from data model → source systems → orchestration → contextualization; cherry-pick only what applies | +| **Customers** deploying CDF for the first time | Clear, layered architecture from data model → source systems → orchestration → contextualization; cherry-pick only what applies | + --- @@ -105,6 +109,7 @@ modules = [ ``` New modules created as part of this DP: + - `foundation/cdf_foundation` - `sourcesystem/cdf_pi_foundation` - `sourcesystem/cdf_opcua_foundation` @@ -112,6 +117,7 @@ New modules created as part of this DP: - `foundation/cdf_ingestion_foundation` Existing modules referenced without modification: + - `models/qs_enterprise_dm` - `accelerators/contextualization/cdf_file_annotation` - `accelerators/contextualization/cdf_entity_matching` @@ -217,21 +223,24 @@ On top of what `cdf_common` provides, `cdf_foundation` adds auth groups and a fo **Resources**: -| Resource | Variable / External ID | Mirrors `cdf_common`? | Purpose | -|---|---|---|---| -| `Space` | `{{ instanceSpace }}` | Yes | Primary instance space for DM data | -| `Space` | `{{ functionSpace }}` | Yes | Space for CDF Function instances | -| `DataSet` | `{{ dataset }}` | Yes | Shared dataset for ingestion resources | -| `DataSet` | `ds_{{location}}_foundation` | No (new) | Dataset for foundational resources | -| `RAW Database` | `{{ rawSourceDatabase }}` | Yes | Source data landing zone | -| `RAW Database` | `{{ rawStateDatabase }}` | Yes | Contextualization state database | -| `RAW Table` | `{{ rawStateDatabase }}.{{ rawStateTable }}` | Yes | State cursor table for annotation/sync jobs | -| `Group` | `grp_{{location}}_admins` | No (new) | Full project access for administrators | -| `Group` | `grp_{{location}}_readonly` | No (new) | Read-only access for viewers | -| `Group` | `grp_{{location}}_extractors` | No (new) | Write access for extractor service accounts | -| `Group` | `grp_{{location}}_functions` | No (new) | Access for CDF Function service accounts | + +| Resource | Variable / External ID | Mirrors `cdf_common`? | Purpose | +| -------------- | -------------------------------------------- | --------------------- | ------------------------------------------- | +| `Space` | `{{ instanceSpace }}` | Yes | Primary instance space for DM data | +| `Space` | `{{ functionSpace }}` | Yes | Space for CDF Function instances | +| `DataSet` | `{{ dataset }}` | Yes | Shared dataset for ingestion resources | +| `DataSet` | `ds_{{location}}_foundation` | No (new) | Dataset for foundational resources | +| `RAW Database` | `{{ rawSourceDatabase }}` | Yes | Source data landing zone | +| `RAW Database` | `{{ rawStateDatabase }}` | Yes | Contextualization state database | +| `RAW Table` | `{{ rawStateDatabase }}.{{ rawStateTable }}` | Yes | State cursor table for annotation/sync jobs | +| `Group` | `grp_{{location}}_admins` | No (new) | Full project access for administrators | +| `Group` | `grp_{{location}}_readonly` | No (new) | Read-only access for viewers | +| `Group` | `grp_{{location}}_extractors` | No (new) | Write access for extractor service accounts | +| `Group` | `grp_{{location}}_functions` | No (new) | Access for CDF Function service accounts | + **File structure**: + ``` foundation/cdf_foundation/ ├── module.toml @@ -255,19 +264,21 @@ foundation/cdf_foundation/ **Configuration variables** (`default.config.yaml`) — variable names intentionally match `cdf_common` defaults for compatibility: -| Variable | Default | Description | -|---|---|---| -| `location` | *(required)* | Site identifier, e.g. `oslo`, `stavanger` | -| `organization` | *(required)* | Org prefix for view/transformation references | -| `instanceSpace` | `{{location}}_instances` | Instance space for this site's DM data | -| `functionSpace` | `{{location}}_functions` | Space for CDF Function code nodes | -| `dataset` | `ingestion` | Shared dataset for transformations, functions, workflows | -| `rawSourceDatabase` | `ingestion` | RAW DB for source system landed data | -| `rawStateDatabase` | `contextualizationState` | RAW DB for state cursors | -| `rawStateTable` | `diagramParsing` | State table used by annotation and sync jobs | -| `schemaSpace` | `sp_enterprise_process_industry` | Schema space from `qs_enterprise_dm` | -| `annotationSpace` | `{{location}}_instances` | Space where annotation edges are stored | -| `dataModelVersion` | `v1.0` | Data model version for transformation view references | + +| Variable | Default | Description | +| ------------------- | -------------------------------- | -------------------------------------------------------- | +| `location` | *(required)* | Site identifier, e.g. `oslo`, `stavanger` | +| `organization` | *(required)* | Org prefix for view/transformation references | +| `instanceSpace` | `{{location}}_instances` | Instance space for this site's DM data | +| `functionSpace` | `{{location}}_functions` | Space for CDF Function code nodes | +| `dataset` | `ingestion` | Shared dataset for transformations, functions, workflows | +| `rawSourceDatabase` | `ingestion` | RAW DB for source system landed data | +| `rawStateDatabase` | `contextualizationState` | RAW DB for state cursors | +| `rawStateTable` | `diagramParsing` | State table used by annotation and sync jobs | +| `schemaSpace` | `sp_enterprise_process_industry` | Schema space from `qs_enterprise_dm` | +| `annotationSpace` | `{{location}}_instances` | Space where annotation edges are stored | +| `dataModelVersion` | `v1.0` | Data model version for transformation view references | + **Dependencies**: None @@ -278,6 +289,7 @@ foundation/cdf_foundation/ **Purpose**: Enterprise data model providing 39 views across Asset, Equipment, Maintenance, TimeSeries, Files, and 3D. All source system transformations in this DP write into views defined here. **Resources** (existing, unchanged): + - 3 Spaces (`sp_enterprise_process_industry`, `sp_enterprise_instance`, `sp_site_instance`) - 46 Containers, 39 Views - 2 Data Models (`qs-enterprise`, `qs-enterprise-search`) @@ -292,17 +304,20 @@ foundation/cdf_foundation/ **Resources**: -| Resource | External ID | Purpose | -|---|---|---| -| `ExtractionPipeline` | `ep_{{location}}_pi` | Pipeline health tracking and config delivery | -| `ExtractionPipeline Config` | *(attached to pipeline)* | PI .NET extractor config template | -| `RAW Database` | `db_{{location}}_pi` | PI tag metadata landing zone | -| `RAW Table` | `db_{{location}}_pi:timeseries` | PI tag name, description, unit, engineering range | -| `Transformation` | `tr_{{location}}_pi_timeseries` | RAW PI tags → `CogniteTimeSeries` DM instances | + +| Resource | External ID | Purpose | +| --------------------------- | ------------------------------- | ------------------------------------------------- | +| `ExtractionPipeline` | `ep_{{location}}_pi` | Pipeline health tracking and config delivery | +| `ExtractionPipeline Config` | *(attached to pipeline)* | PI .NET extractor config template | +| `RAW Database` | `db_{{location}}_pi` | PI tag metadata landing zone | +| `RAW Table` | `db_{{location}}_pi:timeseries` | PI tag name, description, unit, engineering range | +| `Transformation` | `tr_{{location}}_pi_timeseries` | RAW PI tags → `CogniteTimeSeries` DM instances | + **Extractor config template** (from `gss-knowledge-base/extractors/toolkit_examples/pi_net_extractor/`): Key customer-configured parameters: + ```yaml # Supplied via environment variables: # PI_HOST — PI server hostname or IP @@ -319,11 +334,13 @@ Key customer-configured parameters: ``` **Transformation notes**: + - Maps PI tag name → `externalId` with `pi:` prefix - Writes to `CogniteTimeSeries` view in `{{instanceSpace}}` - `sysTagsFound` is populated by default (opt-out via `populateSysTagsFound: false` in `default.config.yaml`) to maintain downstream contextualization compatibility **File structure**: + ``` sourcesystem/cdf_pi_foundation/ ├── module.toml @@ -339,13 +356,16 @@ sourcesystem/cdf_pi_foundation/ **Configuration variables**: -| Variable | Default | Description | -|---|---|---| -| `location` | *(inherited)* | Site identifier | -| `piIdPrefix` | `pi:` | External ID prefix for PI timeseries | -| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | + +| Variable | Default | Description | +| ---------------------- | ------------- | ------------------------------------------------ | +| `location` | *(inherited)* | Site identifier | +| `piIdPrefix` | `pi:` | External ID prefix for PI timeseries | +| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | + **Environment variables required**: + - `PI_HOST`, `PI_USER`, `PI_PASSWORD` - Standard CDF auth vars @@ -359,17 +379,20 @@ sourcesystem/cdf_pi_foundation/ **Resources**: -| Resource | External ID | Purpose | -|---|---|---| -| `ExtractionPipeline` | `ep_{{location}}_opcua` | Pipeline health tracking and config delivery | -| `ExtractionPipeline Config` | *(attached to pipeline)* | OPC-UA extractor config template | -| `RAW Database` | `db_{{location}}_opcua` | OPC-UA node metadata landing zone | -| `RAW Table` | `db_{{location}}_opcua:nodes` | OPC-UA variable nodes: name, description, data type, EU range | -| `Transformation` | `tr_{{location}}_opcua_timeseries` | RAW OPC-UA nodes → `CogniteTimeSeries` DM instances | + +| Resource | External ID | Purpose | +| --------------------------- | ---------------------------------- | ------------------------------------------------------------- | +| `ExtractionPipeline` | `ep_{{location}}_opcua` | Pipeline health tracking and config delivery | +| `ExtractionPipeline Config` | *(attached to pipeline)* | OPC-UA extractor config template | +| `RAW Database` | `db_{{location}}_opcua` | OPC-UA node metadata landing zone | +| `RAW Table` | `db_{{location}}_opcua:nodes` | OPC-UA variable nodes: name, description, data type, EU range | +| `Transformation` | `tr_{{location}}_opcua_timeseries` | RAW OPC-UA nodes → `CogniteTimeSeries` DM instances | + **Extractor config template** (from `gss-knowledge-base/extractors/toolkit_examples/opcua_extractor_speira_quickstart/`): Key customer-configured parameters: + ```yaml # Supplied via environment variables: # OPCUA_ENDPOINT_URL — e.g. opc.tcp://192.168.1.10:4840 @@ -392,12 +415,14 @@ Key customer-configured parameters: ``` **Transformation notes**: + - OPC-UA extractor writes node metadata to `db_{{location}}_opcua:nodes` (RAW) - Transformation reads RAW and maps to `CogniteTimeSeries` view in `{{instanceSpace}}` - External ID: `opcua:` - `sysTagsFound` opt-out behavior same as PI module **File structure**: + ``` sourcesystem/cdf_opcua_foundation/ ├── module.toml @@ -413,15 +438,18 @@ sourcesystem/cdf_opcua_foundation/ **Configuration variables**: -| Variable | Default | Description | -|---|---|---| -| `location` | *(inherited)* | Site identifier | -| `opcuaIdPrefix` | `opcua:` | External ID prefix for OPC-UA timeseries | -| `opcuaPublishingInterval` | `5000` | OPC-UA publishing interval in ms | -| `opcuaSamplingInterval` | `5000` | OPC-UA sampling interval in ms | -| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | + +| Variable | Default | Description | +| ------------------------- | ------------- | ------------------------------------------------ | +| `location` | *(inherited)* | Site identifier | +| `opcuaIdPrefix` | `opcua:` | External ID prefix for OPC-UA timeseries | +| `opcuaPublishingInterval` | `5000` | OPC-UA publishing interval in ms | +| `opcuaSamplingInterval` | `5000` | OPC-UA sampling interval in ms | +| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | + **Environment variables required**: + - `OPCUA_ENDPOINT_URL`, `OPCUA_USER`, `OPCUA_PASSWORD` - Standard CDF auth vars @@ -437,28 +465,31 @@ Ships with a complete SAP OData extractor configuration template sourced from gs **Resources**: -| Resource | External ID | Purpose | -|---|---|---| -| `ExtractionPipeline` | `ep_{{location}}_sap` | Pipeline health tracking and config delivery | -| `ExtractionPipeline Config` | *(attached to pipeline)* | SAP OData extractor config template | -| `RAW Database` | `db_{{location}}_sap` | SAP data landing zone | -| `RAW Table` | `db_{{location}}_sap:equipment` | SAP equipment master records | -| `RAW Table` | `db_{{location}}_sap:functional_location` | SAP functional location hierarchy | -| `RAW Table` | `db_{{location}}_sap:workorder` | SAP work orders (PM orders) | -| `RAW Table` | `db_{{location}}_sap:workpackage` | SAP work packages | -| `RAW Table` | `db_{{location}}_sap:worktask` | SAP work tasks (operations) | -| `RAW Table` | `db_{{location}}_sap:workitem` | SAP work items (sub-operations) | -| `RAW Table` | `db_{{location}}_sap:state_store` | OData extractor delta state (cursor tracking) | -| `Transformation` | `tr_{{location}}_sap_assets` | Functional locations → `Asset` DM instances | -| `Transformation` | `tr_{{location}}_sap_equipment` | Equipment master → `Equipment` DM instances | -| `Transformation` | `tr_{{location}}_sap_equipment_to_asset` | Equipment → Asset edge relationships | -| `Transformation` | `tr_{{location}}_sap_maintenance_orders` | Work orders → `MaintenanceOrder` DM instances | -| `Transformation` | `tr_{{location}}_sap_operations` | Work tasks/items → `Operation` DM instances | -| `Transformation` | `tr_{{location}}_sap_operation_to_order` | Operation → MaintenanceOrder edge relationships | + +| Resource | External ID | Purpose | +| --------------------------- | ----------------------------------------- | ----------------------------------------------- | +| `ExtractionPipeline` | `ep_{{location}}_sap` | Pipeline health tracking and config delivery | +| `ExtractionPipeline Config` | *(attached to pipeline)* | SAP OData extractor config template | +| `RAW Database` | `db_{{location}}_sap` | SAP data landing zone | +| `RAW Table` | `db_{{location}}_sap:equipment` | SAP equipment master records | +| `RAW Table` | `db_{{location}}_sap:functional_location` | SAP functional location hierarchy | +| `RAW Table` | `db_{{location}}_sap:workorder` | SAP work orders (PM orders) | +| `RAW Table` | `db_{{location}}_sap:workpackage` | SAP work packages | +| `RAW Table` | `db_{{location}}_sap:worktask` | SAP work tasks (operations) | +| `RAW Table` | `db_{{location}}_sap:workitem` | SAP work items (sub-operations) | +| `RAW Table` | `db_{{location}}_sap:state_store` | OData extractor delta state (cursor tracking) | +| `Transformation` | `tr_{{location}}_sap_assets` | Functional locations → `Asset` DM instances | +| `Transformation` | `tr_{{location}}_sap_equipment` | Equipment master → `Equipment` DM instances | +| `Transformation` | `tr_{{location}}_sap_equipment_to_asset` | Equipment → Asset edge relationships | +| `Transformation` | `tr_{{location}}_sap_maintenance_orders` | Work orders → `MaintenanceOrder` DM instances | +| `Transformation` | `tr_{{location}}_sap_operations` | Work tasks/items → `Operation` DM instances | +| `Transformation` | `tr_{{location}}_sap_operation_to_order` | Operation → MaintenanceOrder edge relationships | + **Extractor config template** (from `gss-knowledge-base/extractors/toolkit_examples/sap_odata_extractor_remote/`): Key customer-configured parameters: + ```yaml # Supplied via environment variables: # SAP_GATEWAY_URL — SAP NW Gateway base URL @@ -487,14 +518,17 @@ Key customer-configured parameters: ``` **Multi-plant behavior**: + - Default: `sapPlant: "1000"` → single RAW database, standard table names - Multi-plant: `sapPlants: ["1000", "2000", "3000"]` → extractor config expands per plant, transformations use a `UNION ALL` pattern across plant-prefixed tables **Transformation notes**: + - All SQL uses `{{location}}`, `{{organization}}`, `{{sapSystem}}`, `{{instanceSpace}}`, `{{schemaSpace}}` variables — no hardcoded site names - `sysTagsFound` populated on `MaintenanceOrder` for downstream connection compatibility (opt-out via `populateSysTagsFound: false`) **File structure**: + ``` sourcesystem/cdf_sap_foundation/ ├── module.toml @@ -515,16 +549,19 @@ sourcesystem/cdf_sap_foundation/ **Configuration variables**: -| Variable | Default | Description | -|---|---|---| -| `location` | *(inherited)* | Site identifier | -| `organization` | *(inherited)* | Org prefix for view references | -| `sapSystem` | `s4hana` | SAP system label, used in external IDs | -| `sapPlant` | `1000` | Default single-plant code | -| `sapPlants` | `[]` | Override with a list for multi-plant expansion, e.g. `["1000","2000"]` | -| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | + +| Variable | Default | Description | +| ---------------------- | ------------- | ---------------------------------------------------------------------- | +| `location` | *(inherited)* | Site identifier | +| `organization` | *(inherited)* | Org prefix for view references | +| `sapSystem` | `s4hana` | SAP system label, used in external IDs | +| `sapPlant` | `1000` | Default single-plant code | +| `sapPlants` | `[]` | Override with a list for multi-plant expansion, e.g. `["1000","2000"]` | +| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | + **Environment variables required**: + - `SAP_GATEWAY_URL`, `SAP_CLIENT`, `SAP_USERNAME`, `SAP_PASSWORD` - Standard CDF auth vars @@ -534,207 +571,156 @@ sourcesystem/cdf_sap_foundation/ ### 6. `foundation/cdf_ingestion_foundation` *(New)* -**Purpose**: A source-agnostic, two-phase ingestion workflow that orchestrates population and contextualization transformations. Each transformation task in the workflow is referenced via a named variable in `default.config.yaml`. Deploying a new source system or wiring in a new contextualization transformation means updating a variable value — the workflow YAML structure does not change. +**Purpose**: A source-agnostic, two-phase ingestion workflow that orchestrates population and contextualization transformations. The `WorkflowVersion.yaml` deployed to CDF is **generated at build time** from per-task snippet templates by a Python script (`scripts/build_workflow.py`). A DE edits only `default.config.yaml` to declare which source systems are enabled and which data model variant is in use — then runs the script to produce the final workflow YAML before deploying. -**Design**: +This pattern is established in the library codebase (see `accelerators/key_extraction_aliasing`) and solves the optional-task problem cleanly: the generated YAML contains only the tasks for the enabled sources, so CDF never references a transformation that does not exist. -The CDF Toolkit does not support foreach/list iteration in YAML — variables are simple value substitutions, not list expansions. The workflow therefore follows the same pattern as the existing `cdf_ingestion` module: each transformation task is a named variable. The key difference is that all variable defaults use `{{location}}`-prefixed external IDs (matching the foundation source system modules), grouping is clearly separated into population vs contextualization phases in `default.config.yaml`, and OPC-UA is included as a first-class optional task. +**Design**: The workflow has two sequential phases: -1. **Population phase** — loads data from RAW into DM instances. Tasks run in parallel. -2. **Contextualization phase** — builds relationships between DM instances. Runs only after the entire population phase succeeds. Tasks run in parallel. +1. **Population phase** — loads data from RAW/DM into DM instances (source system transformations). Tasks within the phase run in parallel. +2. **Contextualization phase** — builds relationships between DM instances. Runs only after the entire population phase succeeds. Tasks within the phase run in parallel. + +The contextualization tasks included in phase 2 are determined by `dataModelVariant`: + +- `qs_enterprise` → `cdf_connection_sql` transformations (maintenance order → asset, TS → equipment, etc.) +- `isa_oil_gas` → ISA-specific relationship transformations from that module +- Future DM variants follow the same pattern Any task failure aborts the workflow (`onFailure: abortWorkflow`). -**Resources**: +**Build-time generation flow**: -| Resource | External ID | Purpose | -|---|---|---| -| `Workflow` | `wf_{{location}}_ingestion` | Orchestrates population → contextualization | -| `WorkflowVersion` | `wf_{{location}}_ingestion/v1` | Active version with task graph | -| `WorkflowTrigger` | `wf_{{location}}_ingestion_trigger` | Scheduled execution (configurable cron) | -| `Group` | `grp_{{location}}_workflow` | Service account group for workflow execution | -| `Group` | `grp_{{location}}_workflow_user` | User group for manual workflow execution | +``` +default.config.yaml workflow_template/tasks/ +(enabledSources, DM variant) + (one YAML snippet per task) + │ │ + └──────────┬───────────────────┘ + ▼ + scripts/build_workflow.py + │ + ▼ + workflows/wf_ingestion_v1.WorkflowVersion.yaml ← committed, deployed +``` -**`default.config.yaml`**: +`**default.config.yaml**`: ```yaml workflow: "wf_{{location}}_ingestion" -workflowSchedule: "0 2 * * *" # daily at 02:00 UTC; set to "0 0 29 2 *" to disable auto-run - -# ----------------------------------------------------------------- -# Population phase — source system transformations -# Set each value to the external ID of the deployed transformation. -# ----------------------------------------------------------------- -piTimeseriesTransformationExternalId: "tr_{{location}}_pi_timeseries" -opcuaTimeseriesTransformationExternalId: "tr_{{location}}_opcua_timeseries" -sapAssetsTransformationExternalId: "tr_{{location}}_sap_assets" -sapEquipmentTransformationExternalId: "tr_{{location}}_sap_equipment" -sapEquipmentToAssetTransformationExternalId: "tr_{{location}}_sap_equipment_to_asset" -sapMaintenanceOrdersTransformationExternalId: "tr_{{location}}_sap_maintenance_orders" -sapOperationsTransformationExternalId: "tr_{{location}}_sap_operations" -sapOperationToOrderTransformationExternalId: "tr_{{location}}_sap_operation_to_order" - -# ----------------------------------------------------------------- -# Contextualization phase — SQL connection transformations -# Uncomment and set when cdf_connection_sql is deployed. -# ----------------------------------------------------------------- -maintenanceOrderToAssetTransformationExternalId: "maintenance_order_to_asset" -operationToAssetTransformationExternalId: "operation_to_asset" -timeSeriesToEquipmentTransformationExternalId: "timeseries_to_equipment" -activityToTimeSeriesTransformationExternalId: "activity_to_timeseries" +workflowSchedule: "0 2 * * *" # daily at 02:00 UTC; "0 0 29 2 *" to disable + +# Which source system modules are deployed at this site +enabledSources: + pi: true + opcua: false + sap: true + +# Which contextualization tasks to include in phase 2 +# Driven by dataModelVariant — set manually only to override +enabledContextualization: + connectionSql: true # auto-enabled when dataModelVariant: qs_enterprise + +# Selects the transformation set used in the contextualization phase +# Supported: qs_enterprise | isa_oil_gas | rmdm +dataModelVariant: qs_enterprise ``` -**`workflows/v1.WorkflowVersion.yaml`** (representative structure): +`**workflow_template/tasks/**` — one snippet per task, each a self-contained YAML block: + +```yaml +# task.pi_timeseries.yaml +- externalId: "tr_{{location}}_pi_timeseries" + type: transformation + parameters: + transformation: + externalId: "tr_{{location}}_pi_timeseries" + concurrencyPolicy: fail + onFailure: abortWorkflow +``` ```yaml -workflowExternalId: "{{ workflow }}" -version: v1 -workflowDefinition: - tasks: - # ── Population phase ───────────────────────────────────────── - # PI, OPC-UA, and SAP population tasks run in parallel - - externalId: "{{ piTimeseriesTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ piTimeseriesTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - - - externalId: "{{ opcuaTimeseriesTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ opcuaTimeseriesTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - - - externalId: "{{ sapAssetsTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ sapAssetsTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - - - externalId: "{{ sapEquipmentTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ sapEquipmentTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - - - externalId: "{{ sapEquipmentToAssetTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ sapEquipmentToAssetTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - dependsOn: - - externalId: "{{ sapAssetsTransformationExternalId }}" - - externalId: "{{ sapEquipmentTransformationExternalId }}" - - - externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - - - externalId: "{{ sapOperationsTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ sapOperationsTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - - - externalId: "{{ sapOperationToOrderTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ sapOperationToOrderTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - dependsOn: - - externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" - - externalId: "{{ sapOperationsTransformationExternalId }}" - - # ── Contextualization phase ─────────────────────────────────── - # Runs only after all population tasks complete successfully - - externalId: "{{ maintenanceOrderToAssetTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ maintenanceOrderToAssetTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - dependsOn: - - externalId: "{{ sapAssetsTransformationExternalId }}" - - externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" - - externalId: "{{ sapOperationsTransformationExternalId }}" - - externalId: "{{ sapOperationToOrderTransformationExternalId }}" - - - externalId: "{{ timeSeriesToEquipmentTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ timeSeriesToEquipmentTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - dependsOn: - - externalId: "{{ piTimeseriesTransformationExternalId }}" - - externalId: "{{ opcuaTimeseriesTransformationExternalId }}" - - externalId: "{{ sapEquipmentTransformationExternalId }}" - - externalId: "{{ sapEquipmentToAssetTransformationExternalId }}" - - - externalId: "{{ activityToTimeSeriesTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ activityToTimeSeriesTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - dependsOn: - - externalId: "{{ piTimeseriesTransformationExternalId }}" - - externalId: "{{ opcuaTimeseriesTransformationExternalId }}" - - externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" - - externalId: "{{ sapOperationToOrderTransformationExternalId }}" - - - externalId: "{{ operationToAssetTransformationExternalId }}" - type: transformation - parameters: - transformation: - externalId: "{{ operationToAssetTransformationExternalId }}" - concurrencyPolicy: fail - onFailure: abortWorkflow - dependsOn: - - externalId: "{{ sapAssetsTransformationExternalId }}" - - externalId: "{{ sapEquipmentTransformationExternalId }}" - - externalId: "{{ sapMaintenanceOrdersTransformationExternalId }}" - - externalId: "{{ sapOperationsTransformationExternalId }}" - - externalId: "{{ sapEquipmentToAssetTransformationExternalId }}" - - externalId: "{{ sapOperationToOrderTransformationExternalId }}" +# task.sap_equipment_to_asset.yaml (has dependsOn — script wires these automatically) +- externalId: "tr_{{location}}_sap_equipment_to_asset" + type: transformation + parameters: + transformation: + externalId: "tr_{{location}}_sap_equipment_to_asset" + concurrencyPolicy: fail + onFailure: abortWorkflow + dependsOn: + - externalId: "tr_{{location}}_sap_assets" + - externalId: "tr_{{location}}_sap_equipment" +``` + +`**scripts/build_workflow.py**` — what the script does: + +1. Reads `default.config.yaml` for `enabledSources`, `enabledContextualization`, `dataModelVariant` +2. Loads only the task snippets that correspond to enabled sources and the correct DM variant's contextualization tasks +3. Validates `dependsOn` references — warns if a dependency task was not included (e.g. `sap_equipment_to_asset` depends on `sap_assets`, which must also be enabled) +4. Assembles the full `WorkflowVersion.yaml` with a generated header comment noting the config it was built from +5. Writes to `workflows/wf_ingestion_v1.WorkflowVersion.yaml` +6. Supports `--check` flag for CI validation (confirms committed YAML matches what the current config would generate) + +**DE workflow**: + +```bash +# 1. Edit default.config.yaml — set enabledSources and dataModelVariant +# 2. Regenerate the workflow YAML +python scripts/build_workflow.py + +# 3. build +cdf build + +# 4. Deploy +cdf deploy ``` -> **Adding a new source system**: Add the new transformation external ID as a new named variable in `default.config.yaml`, add a new task entry in the WorkflowVersion YAML referencing that variable, and set any `dependsOn` entries needed. The existing task graph is unchanged. +> **Adding a new source system**: Add a task snippet in `workflow_template/tasks/`, set `enabledSources.: true` in `default.config.yaml`, run `build_workflow.py`. No existing files change. + +**Resources**: + + +| Resource | External ID | Purpose | +| ----------------- | ----------------------------------- | ----------------------------------------------------- | +| `Workflow` | `wf_{{location}}_ingestion` | Orchestrates population → contextualization | +| `WorkflowVersion` | `wf_{{location}}_ingestion/v1` | Generated version with task graph for enabled sources | +| `WorkflowTrigger` | `wf_{{location}}_ingestion_trigger` | Scheduled execution (configurable cron) | +| `Group` | `grp_{{location}}_workflow` | Service account group for workflow execution | +| `Group` | `grp_{{location}}_workflow_user` | User group for manual workflow execution | + **File structure**: + ``` foundation/cdf_ingestion_foundation/ ├── module.toml -├── default.config.yaml +├── default.config.yaml # edit this to configure sources + DM variant +├── scripts/ +│ └── build_workflow.py # run after editing config; generates WorkflowVersion +├── workflow_template/ +│ ├── workflow.template.WorkflowVersion.yaml # top-level wrapper (workflowExternalId, version) +│ └── tasks/ +│ ├── task.pi_timeseries.yaml +│ ├── task.opcua_timeseries.yaml +│ ├── task.sap_assets.yaml +│ ├── task.sap_equipment.yaml +│ ├── task.sap_equipment_to_asset.yaml +│ ├── task.sap_maintenance_orders.yaml +│ ├── task.sap_operations.yaml +│ ├── task.sap_operation_to_order.yaml +│ ├── ctx.qs_enterprise.maintenance_order_to_asset.yaml # DM-variant ctx tasks +│ ├── ctx.qs_enterprise.ts_to_equipment.yaml +│ ├── ctx.qs_enterprise.activity_to_ts.yaml +│ ├── ctx.qs_enterprise.operation_to_asset.yaml +│ ├── ctx.isa_oil_gas.asset_connections.yaml # ISA ctx tasks (P1) +│ └── ctx.rmdm.asset_connections.yaml # RMDM ctx tasks (P1) ├── auth/ │ ├── grp_workflow.Group.yaml │ └── grp_workflow_user.Group.yaml └── workflows/ ├── wf_ingestion.Workflow.yaml - ├── wf_ingestion_v1.WorkflowVersion.yaml + ├── wf_ingestion_v1.WorkflowVersion.yaml # GENERATED — do not edit by hand └── wf_ingestion_trigger.WorkflowTrigger.yaml ``` @@ -787,6 +773,7 @@ foundation/cdf_ingestion_foundation/ **Purpose**: Contextualization quality dashboard showing coverage metrics: how many timeseries, assets, equipment, files, and maintenance orders have been successfully contextualized. **Resources** (existing): + - `DataSet`: `context_quality_apps` — created by this module - `Function`: `context_quality_handler` — computes contextualization metrics by querying the CDF API at runtime - `Streamlit`: `context_quality_dashboard` — interactive quality dashboard @@ -801,37 +788,41 @@ This means the module deploys and operates independently. It will display meanin Variables are defined once — in `foundation/cdf_foundation/default.config.yaml` — and flow to every other module via the shared variable contract. No module hardcodes a site name or space identifier. -| Variable | Owner | Consumed by | -|---|---|---| -| `location` | `cdf_foundation` | All modules — used in every external ID and RAW database name | -| `organization` | `cdf_foundation` | `cdf_sap_foundation`, all transformation SQL view references | -| `schemaSpace` | `cdf_foundation` | All source system transformations (DM view lookup) | -| `instanceSpace` | `cdf_foundation` | All source system transformations (DM instance write target) | -| `dataSet` | `cdf_foundation` | All source system extraction pipelines and transformations | -| `dataModelVersion` | `cdf_foundation` | All transformation view references | -| `populateSysTagsFound` | Per source module | Source system transformations; set `false` to omit the field | -| `populationTasks` | `cdf_ingestion_foundation` | Workflow task graph generation | -| `contextualizationTasks` | `cdf_ingestion_foundation` | Workflow task graph generation | -| `sapPlant` / `sapPlants` | `cdf_sap_foundation` | SAP extractor config and transformation UNION logic | + +| Variable | Owner | Consumed by | +| ------------------------ | -------------------------- | ------------------------------------------------------------- | +| `location` | `cdf_foundation` | All modules — used in every external ID and RAW database name | +| `organization` | `cdf_foundation` | `cdf_sap_foundation`, all transformation SQL view references | +| `schemaSpace` | `cdf_foundation` | All source system transformations (DM view lookup) | +| `instanceSpace` | `cdf_foundation` | All source system transformations (DM instance write target) | +| `dataSet` | `cdf_foundation` | All source system extraction pipelines and transformations | +| `dataModelVersion` | `cdf_foundation` | All transformation view references | +| `populateSysTagsFound` | Per source module | Source system transformations; set `false` to omit the field | +| `populationTasks` | `cdf_ingestion_foundation` | Workflow task graph generation | +| `contextualizationTasks` | `cdf_ingestion_foundation` | Workflow task graph generation | +| `sapPlant` / `sapPlants` | `cdf_sap_foundation` | SAP extractor config and transformation UNION logic | + --- ## Resource Summary -| Module | Status | Spaces | Datasets | RAW DBs | RAW Tables | Transformations | Workflows | Pipelines | Groups | -|---|---|---|---|---|---|---|---|---|---| -| `foundation/cdf_foundation` | New | 2 | 2 | 1 | 0 | 0 | 0 | 0 | 4 | -| `models/qs_enterprise_dm` | Existing | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -| `sourcesystem/cdf_pi_foundation` | New | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | -| `sourcesystem/cdf_opcua_foundation` | New | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | -| `sourcesystem/cdf_sap_foundation` | New | 0 | 0 | 1 | 7 | 6 | 0 | 1 | 0 | -| `foundation/cdf_ingestion_foundation` | New | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | -| `cdf_file_annotation` | Existing | 0 | 1 | 6 | 6 | 0 | 1 | 1 | 0 | -| `cdf_entity_matching` | Existing | 0 | 0 | 0 | 5 | 0 | 1 | 1 | 0 | -| `cdf_connection_sql` | Existing | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | -| `cdf_search` | Existing | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -| `dashboards/context_quality` | Existing | 0 | 1 | 1 | — | — | 1 | 0 | 0 | -| **Total (new modules only)** | | **5** | **2** | **4** | **9** | **8** | **1** | **3** | **5** | + +| Module | Status | Spaces | Datasets | RAW DBs | RAW Tables | Transformations | Workflows | Pipelines | Groups | +| ------------------------------------- | -------- | ------ | -------- | ------- | ---------- | --------------- | --------- | --------- | ------ | +| `foundation/cdf_foundation` | New | 2 | 2 | 1 | 0 | 0 | 0 | 0 | 4 | +| `models/qs_enterprise_dm` | Existing | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| `sourcesystem/cdf_pi_foundation` | New | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | +| `sourcesystem/cdf_opcua_foundation` | New | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | +| `sourcesystem/cdf_sap_foundation` | New | 0 | 0 | 1 | 7 | 6 | 0 | 1 | 0 | +| `foundation/cdf_ingestion_foundation` | New | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | +| `cdf_file_annotation` | Existing | 0 | 1 | 6 | 6 | 0 | 1 | 1 | 0 | +| `cdf_entity_matching` | Existing | 0 | 0 | 0 | 5 | 0 | 1 | 1 | 0 | +| `cdf_connection_sql` | Existing | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | +| `cdf_search` | Existing | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| `dashboards/context_quality` | Existing | 0 | 1 | 1 | — | — | 1 | 0 | 0 | +| **Total (new modules only)** | | **5** | **2** | **4** | **9** | **8** | **1** | **3** | **5** | + --- @@ -841,40 +832,46 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml **Goal**: A DE can deploy a complete, real industrial CDF project from scratch using this DP — source system extraction, data model, orchestration, and contextualization — without consulting gss-knowledge-base or assembling boilerplate manually. -| Deliverable | Modules | -|---|---| -| Core project infrastructure | `foundation/cdf_foundation` | -| Enterprise data model | `models/qs_enterprise_dm` | -| PI timeseries ingestion | `sourcesystem/cdf_pi_foundation` | -| OPC-UA timeseries ingestion | `sourcesystem/cdf_opcua_foundation` | -| SAP asset + maintenance ingestion | `sourcesystem/cdf_sap_foundation` | -| Modular ingestion orchestration | `foundation/cdf_ingestion_foundation` | -| P&ID file annotation | `accelerators/contextualization/cdf_file_annotation` *(existing)* | -| Entity matching | `accelerators/contextualization/cdf_entity_matching` *(existing)* | -| SQL-based connections | `accelerators/contextualization/cdf_connection_sql` *(existing)* | -| Contextualization quality dashboard | `dashboards/context_quality` *(existing)* | -| Scoped search filters | `accelerators/industrial_tools/cdf_search` *(existing)* | + +| Deliverable | Modules | +| ----------------------------------- | ----------------------------------------------------------------- | +| Core project infrastructure | `foundation/cdf_foundation` | +| Enterprise data model | `models/qs_enterprise_dm` | +| PI timeseries ingestion | `sourcesystem/cdf_pi_foundation` | +| OPC-UA timeseries ingestion | `sourcesystem/cdf_opcua_foundation` | +| SAP asset + maintenance ingestion | `sourcesystem/cdf_sap_foundation` | +| Modular ingestion orchestration | `foundation/cdf_ingestion_foundation` | +| P&ID file annotation | `accelerators/contextualization/cdf_file_annotation` *(existing)* | +| Entity matching | `accelerators/contextualization/cdf_entity_matching` *(existing)* | +| SQL-based connections | `accelerators/contextualization/cdf_connection_sql` *(existing)* | +| Contextualization quality dashboard | `dashboards/context_quality` *(existing)* | +| Scoped search filters | `accelerators/industrial_tools/cdf_search` *(existing)* | + ### P1 — v2: Quality and Testing **Goal**: Deployments are verifiable. A DE can confirm that transformations produce correct output before handing a project to a customer. -| Deliverable | Notes | -|---|---| -| Transformation unit test framework | Test harness that validates SQL transformation output against known-good fixtures | -| Document source module (`cdf_documents_foundation`) | Generic file ingestion replacing the SharePoint-specific module | -| Multi-plant SAP validation | Verified multi-plant expansion via `sapPlants` list variable | + +| Deliverable | Notes | +| --------------------------------------------------- | --------------------------------------------------------------------------------- | +| Transformation unit test framework | Test harness that validates SQL transformation output against known-good fixtures | +| Document source module (`cdf_documents_foundation`) | Generic file ingestion replacing the SharePoint-specific module | +| Multi-plant SAP validation | Verified multi-plant expansion via `sapPlants` list variable | + ### P2 — v3: AI and Extended Source Systems **Goal**: The foundation DP becomes the entry point for AI-augmented industrial workflows and a broader set of source systems. -| Deliverable | Notes | -|---|---| -| Atlas AI integration (`dp:atlas_ai`) | OOTB agents layered on top of the foundation data model | -| Additional source systems | Maximo, Meridium, or other CMMS as `sourcesystem/cdf__foundation` modules | -| Automated quality checks | Scheduled data quality assertions beyond contextualization coverage | -| PI Asset Framework (AF) support | Hierarchy ingestion from PI AF as an extension module | + +| Deliverable | Notes | +| ------------------------------------ | --------------------------------------------------------------------------------- | +| Atlas AI integration (`dp:atlas_ai`) | OOTB agents layered on top of the foundation data model | +| Additional source systems | Maximo, Meridium, or other CMMS as `sourcesystem/cdf__foundation` modules | +| Automated quality checks | Scheduled data quality assertions beyond contextualization coverage | +| PI Asset Framework (AF) support | Hierarchy ingestion from PI AF as an extension module | + --- @@ -882,41 +879,43 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml ### Team and Repository Dependencies -| Dependency | Risk | Mitigation | -|---|---|---| -| **`library` repo** (this repo) | All new modules land here; merge conflicts if other teams are actively developing in `modules/` | Coordinate with module owners; use feature branches per module | -| **`gss-knowledge-base` repo** | Extractor config templates are sourced from here; changes there may need to be reflected in the DP | Pin to a specific commit or tag at release time; document the source commit in module READMEs | -| **`qs_enterprise_dm` data model** | All source system transformations reference views in this data model. A view rename or property removal in a future `qs_enterprise_dm` version will break the foundation transformations without a coordinated update | Transformation SQL should reference the model via the `{{dataModelVersion}}` variable; bump the variable when upgrading; pin the model version used in v1 explicitly | -| **CDF Toolkit version** | Module YAML syntax, WorkflowVersion schema, and variable substitution behaviour are Toolkit-version-dependent. A Toolkit major version bump may require YAML updates | Document the minimum supported Toolkit version in `module.toml`; test against the pinned version in CI | -| **CDF Workflows API** | The ingestion workflow uses the Workflows API (GA). Behaviour changes to `concurrencyPolicy`, `onFailure`, or task types would require workflow YAML updates | Monitor CDF release notes; the two-phase task graph is relatively simple and low-risk | + +| Dependency | Risk | Mitigation | +| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `**library` repo** (this repo) | All new modules land here; merge conflicts if other teams are actively developing in `modules/` | Coordinate with module owners; use feature branches per module | +| `**gss-knowledge-base` repo** | Extractor config templates are sourced from here; changes there may need to be reflected in the DP | Pin to a specific commit or tag at release time; document the source commit in module READMEs | +| `**qs_enterprise_dm` data model** | All source system transformations reference views in this data model. A view rename or property removal in a future `qs_enterprise_dm` version will break the foundation transformations without a coordinated update | Transformation SQL should reference the model via the `{{dataModelVersion}}` variable; bump the variable when upgrading; pin the model version used in v1 explicitly | +| **CDF Toolkit version** | Module YAML syntax, WorkflowVersion schema, and variable substitution behaviour are Toolkit-version-dependent. A Toolkit major version bump may require YAML updates | Document the minimum supported Toolkit version in `module.toml`; test against the pinned version in CI | +| **CDF Workflows API** | The ingestion workflow uses the Workflows API (GA). Behaviour changes to `concurrencyPolicy`, `onFailure`, or task types would require workflow YAML updates | Monitor CDF release notes; the two-phase task graph is relatively simple and low-risk | + ### Known Technical Risks -| Risk | Likelihood | Impact | Mitigation | -|---|---|---|---| -| **PI extractor config drift across PI versions** | Medium | Medium | The PI .NET Extractor config schema changes between major versions (e.g., v2.x → v3.x renamed several keys). The config template must document which extractor version it targets; field engineers must verify compatibility before deploying against older PI servers. | -| **SAP OData endpoint variability** | Medium | High | SAP NW Gateway services and entity names differ between SAP versions and customer configurations. The extractor config template provides the common entity set (equipment, functional locations, work orders) but customers may need to adjust service names and key fields for their specific SAP landscape. | -| **OPC-UA node filter requirements** | High | Low | OPC-UA node structure is highly site-specific. The extractor config template ships with commented-out example filters. Without correct filters, the extractor will browse the full OPC-UA server tree, which may be very large and slow. DEs must configure filters before production use — this should be explicitly documented. | -| **`cdf_foundation` vs `cdf_common` variable conflict** | Low | High | If an existing module is deployed with `cdf_common` and then `cdf_foundation` is introduced in the same project, and the variable values differ (e.g., different `instanceSpace` defaults), resources may be duplicated or point to the wrong space. The two modules should not be deployed together in the same project. | -| **Optional workflow tasks referencing non-existent transformations** | High | Medium | CDF Workflows will fail at runtime if a task references a transformation external ID that does not exist. If a customer deploys only PI (no SAP), the workflow will fail on SAP task references. This must be resolved before v1 ships — see Open Questions. | + +| Risk | Likelihood | Impact | Mitigation | +| ------------------------------------------------------ | ---------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **PI extractor config drift across PI versions** | Medium | Medium | The PI .NET Extractor config schema changes between major versions (e.g., v2.x → v3.x renamed several keys). The config template must document which extractor version it targets; field engineers must verify compatibility before deploying against older PI servers. | +| **SAP OData endpoint variability** | Medium | High | SAP NW Gateway services and entity names differ between SAP versions and customer configurations. The extractor config template provides the common entity set (equipment, functional locations, work orders) but customers may need to adjust service names and key fields for their specific SAP landscape. | +| **OPC-UA node filter requirements** | High | Low | OPC-UA node structure is highly site-specific. The extractor config template ships with commented-out example filters. Without correct filters, the extractor will browse the full OPC-UA server tree, which may be very large and slow. DEs must configure filters before production use — this should be explicitly documented. | +| `**cdf_foundation` vs `cdf_common` variable conflict** | Low | High | If an existing module is deployed with `cdf_common` and then `cdf_foundation` is introduced in the same project, and the variable values differ (e.g., different `instanceSpace` defaults), resources may be duplicated or point to the wrong space. The two modules should not be deployed together in the same project. | +| **Workflow generation script correctness** | Low | Medium | The `build_workflow.py` script must correctly wire `dependsOn` chains when only a subset of sources is enabled (e.g. if SAP is disabled, tasks that depend on SAP transformations must not reference them). The script should validate dependency integrity at generation time and fail loudly on inconsistencies. CI `--check` flag prevents drift between config and committed YAML. | + --- ## Open Questions -### Q1 — Optional source system tasks in the ingestion workflow *(must resolve before v1)* +### Q1 — Optional source system tasks in the ingestion workflow *(resolved)* + +**Decision**: Build-time YAML generation via `scripts/build_workflow.py`, following the pattern established in the library by `accelerators/key_extraction_aliasing` (PR #220). -If a customer deploys only PI (no OPC-UA, no SAP), the WorkflowVersion YAML will still reference OPC-UA and SAP transformation external IDs. CDF Workflows fails at runtime if any referenced transformation does not exist. +A Python script reads `enabledSources` flags from `default.config.yaml`, assembles only the relevant per-task snippets from `workflow_template/tasks/`, and writes the final `WorkflowVersion.yaml` before `cdf deploy` runs. The generated file is committed to the repo. CDF only ever sees a static YAML that references transformations that are actually deployed. -**Options**: +This also resolves the DM-variant contextualization task selection: `dataModelVariant: qs_enterprise` pulls in `cdf_connection_sql` task snippets; `dataModelVariant: isa_oil_gas` pulls in ISA-specific snippets. The workflow YAML structure is identical — only the task set differs. -| Option | Pros | Cons | -|---|---|---| -| **(a) Require all referenced transformations** — document as a hard deploy prerequisite | Simple, no additional tooling | Forces customers to deploy unused source system modules just to satisfy the workflow | -| **(b) Dynamic task generation** — a CDF Function checks which transformations exist at runtime and emits only those as dynamic tasks | True modularity; workflow adapts to what's deployed | Adds a Function dependency to the orchestration layer; more complex to debug | -| **(c) Multiple WorkflowVersion templates** — ship templates for common combinations (PI-only, SAP-only, PI+SAP, PI+OPC-UA+SAP) | Simple YAML, no runtime logic | Combinatorial explosion as source systems increase; violates the "add a variable, not a file" principle | +A `--check` flag on the script validates in CI that the committed YAML matches what the current config would generate, preventing drift. -**Recommendation**: Option (b) is the right long-term answer but adds scope. For v1, implement option (c) with the full combination as the default and document option (b) as the v2 target. Needs a decision before implementation starts. +See the `cdf_ingestion_foundation` module spec (section 6) for full design details. --- @@ -926,12 +925,14 @@ If a customer deploys only PI (no OPC-UA, no SAP), the WorkflowVersion YAML will **Trade-off**: -| | Merged (`cdf_sap_foundation`) | Split (`cdf_sap_assets_foundation` + `cdf_sap_events_foundation`) | -|---|---|---| -| **Extractor config** | One extractor config, one extraction pipeline — SAP OData targets all entity types | Two configs — possible if different schedules or auth are needed per entity group | -| **Deployment atomicity** | Deploy SAP as one unit — assets and events always go together | Can deploy asset hierarchy without maintenance data (useful in early-stage projects) | -| **Module count** | Simpler; fewer modules to manage | More granular control | -| **Auth** | Single service account for all SAP entities | Could scope credentials separately per entity group | + +| | Merged (`cdf_sap_foundation`) | Split (`cdf_sap_assets_foundation` + `cdf_sap_events_foundation`) | +| ------------------------ | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | +| **Extractor config** | One extractor config, one extraction pipeline — SAP OData targets all entity types | Two configs — possible if different schedules or auth are needed per entity group | +| **Deployment atomicity** | Deploy SAP as one unit — assets and events always go together | Can deploy asset hierarchy without maintenance data (useful in early-stage projects) | +| **Module count** | Simpler; fewer modules to manage | More granular control | +| **Auth** | Single service account for all SAP entities | Could scope credentials separately per entity group | + The merged approach is preferred because: (a) in practice, assets and maintenance orders are always needed together for meaningful contextualization; (b) the SAP OData extractor is typically configured with a single connection to the NW Gateway covering all entity types; (c) fewer modules reduces cognitive overhead for field engineers. If a customer needs to separate schedules, they can configure per-endpoint cron expressions within the single extractor config. @@ -968,3 +969,4 @@ The WorkflowVersion YAML schema and variable substitution syntax are Toolkit-ver - Adding a fourth source system to an existing deployment requires: (a) deploying one new module and (b) updating one variable in `cdf_ingestion_foundation/default.config.yaml` — no existing module files are modified. - Deploying the same DP to a second site (different `location` value) requires only a new variable file — all module YAML is reused as-is. + From 790566c19f69288c1c6beb1382589b805cfef55c Mon Sep 17 00:00:00 2001 From: Valeriya Naumova <130550761+valnaumova@users.noreply.github.com> Date: Thu, 9 Apr 2026 15:31:31 +0200 Subject: [PATCH 03/18] Update PRD.md 1. Small update on success criteria 2. Added inconsistencies as a pain point --- PRD.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/PRD.md b/PRD.md index 80c2242d..a576b843 100644 --- a/PRD.md +++ b/PRD.md @@ -21,6 +21,7 @@ When a DE starts a new CDF project, there is no authoritative, reusable starting - `**dp:quickstart`** is demo-oriented — it ships synthetic data and pre-configured connections that are tightly coupled to a fictional "Springfield" site. Removing synthetic data, renaming locations, or swapping a source system requires touching files across multiple modules. It is not designed to evolve into a production deployment. - **Blank-slate projects** (no DP) require DEs to assemble spaces, datasets, groups, extractor configs, transformations, and orchestration from scratch on every engagement. This leads to inconsistent project structures, configuration drift, and undocumented decisions. - **gss-knowledge-base** contains mature extractor configuration templates (PI, OPC-UA, SAP) but they are not wired into any deployable DP — DEs must manually locate, copy, and adapt them per project. +- **lack of standardisation and compliance with best practices**: a simple research showed that out of eight delivered QS there were no consistency in naming convention, access control, data model alignment The result is that each new deployment is partially reinvented, slowing delivery and introducing variability that makes cross-project support harder. @@ -28,7 +29,7 @@ The result is that each new deployment is partially reinvented, slowing delivery `dp:foundation` gives DEs and partners a single, composable starting point they can deploy to a real customer project on day one: -- Extractor configuration templates for the three most common industrial source systems are bundled and ready — no gss-knowledge-base lookup required. +- Extractor configuration templates for the three most common industrial source systems are bundled and ready — no gss-knowledge-base or other lookup required. - The project structure (spaces, datasets, groups, data model, orchestration) is standardised and parameterised by `location` — a new site is a new variable value, not a new set of files. - Contextualization is a first-class, deployable capability, not an afterthought. - The architecture is open for extension (add a module, set a variable) rather than modification (fork and edit). @@ -962,8 +963,8 @@ The WorkflowVersion YAML schema and variable substitution syntax are Toolkit-ver ### Field engineer experience (outcome-based) - **Extractor readiness**: A field engineer with CDF credentials and source system credentials can configure and run the PI, OPC-UA, or SAP extractor using only the config template shipped in the module — without consulting gss-knowledge-base or requesting help from another team member. -- **Time to first data in CDF**: A DE starting from a blank, provisioned CDF project can have timeseries and asset data flowing into the data model within **one working day** of deploying `dp:foundation` with a single source system. -- **Time to end-to-end deployment**: A DE deploying all three source systems (PI + OPC-UA + SAP) plus contextualization on a new customer project can complete the deployment within **two working days**. +- **Time to first data in CDF**: A DE starting from a blank, provisioned CDF project can have timeseries and asset data flowing into the data model within **one working day** of deploying `dp:foundation` with a single source system if access to source systems is provided. +- **Time to end-to-end deployment**: A DE deploying all three source systems (PI + OPC-UA + SAP) plus contextualization of 10-50 PIDs on a new customer project can complete the deployment within **two working days**. ### Scalability (structural checks) From 30dcaa847ecede049980d5f3ef29850b221f0bfd Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Fri, 10 Apr 2026 11:12:13 +0530 Subject: [PATCH 04/18] PRD V2 release update --- PRD.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/PRD.md b/PRD.md index a576b843..ba0845ec 100644 --- a/PRD.md +++ b/PRD.md @@ -861,17 +861,18 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml | Multi-plant SAP validation | Verified multi-plant expansion via `sapPlants` list variable | -### P2 — v3: AI and Extended Source Systems - -**Goal**: The foundation DP becomes the entry point for AI-augmented industrial workflows and a broader set of source systems. - - -| Deliverable | Notes | -| ------------------------------------ | --------------------------------------------------------------------------------- | -| Atlas AI integration (`dp:atlas_ai`) | OOTB agents layered on top of the foundation data model | -| Additional source systems | Maximo, Meridium, or other CMMS as `sourcesystem/cdf__foundation` modules | -| Automated quality checks | Scheduled data quality assertions beyond contextualization coverage | -| PI Asset Framework (AF) support | Hierarchy ingestion from PI AF as an extension module | +### P2 — v3: AI, Extended Source Systems, and Operational Tooling + +**Goal**: The foundation DP becomes the entry point for AI-augmented industrial workflows, a broader set of source systems, and richer operational visibility for DEs and customers post-deployment. + +| Deliverable | Module | Notes | +|---|---|---| +| Atlas AI integration | `dp:atlas_ai` | OOTB agents layered on top of the foundation data model | +| Additional source systems | `sourcesystem/cdf__foundation` | Maximo, Meridium, or other CMMS | +| PI Asset Framework (AF) support | `sourcesystem/cdf_pi_af_foundation` | Hierarchy ingestion from PI AF as an extension to `cdf_pi_foundation` | +| Project health dashboard | `dashboards/project_health` | Operational visibility: extraction pipeline uptime, transformation error rates, extraction run status. Already exists in the library — inclusion requires verifying it works independently of the quickstart modules it was originally shipped with. Adds to Layer 5 alongside `dashboards/context_quality`. | +| Qualitizer app | `tools/apps/qualitizer` | Interactive data quality tool for DEs and customers to inspect and act on quality issues across assets, timeseries, and files. Complements the passive quality metrics in `context_quality` with actionable, record-level review. Adds to Layer 5. | +| Automated quality assertions | *(new module)* | Scheduled transformation-based checks (null rates, referential integrity, coverage thresholds) that go beyond contextualization coverage metrics | --- From 551524b0f08bb49693c597088e9ef38c5eda4098 Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Fri, 10 Apr 2026 13:36:20 +0530 Subject: [PATCH 05/18] PRD update --- PRD.md | 85 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 46 insertions(+), 39 deletions(-) diff --git a/PRD.md b/PRD.md index ba0845ec..ca1a8406 100644 --- a/PRD.md +++ b/PRD.md @@ -2,7 +2,7 @@ ## Overview -The **Foundation Deployment Pack** (`dp:foundation`) is a scalable, modular CDF deployment package that gives industrial projects a well-structured starting point. It covers the full stack from source system extraction through contextualization: production-grade extractor configuration templates for PI, OPC-UA, and SAP; an enterprise data model; a modular ingestion orchestration workflow; and contextualization capabilities including file annotation, entity matching, and SQL-based connections. +The **Foundation Deployment Pack** (`dp:foundation`) is a scalable, modular CDF deployment package that gives industrial projects a well-structured starting point. It covers the full stack from source system extraction through contextualization: production-grade extractor configuration templates for PI, OPC-UA, and SAP; the ISA Manufacturing Extension data model; a modular ingestion orchestration workflow; and contextualization capabilities including file annotation and entity matching. Every module is independently deployable. The package supports `canCherryPick = true`, so teams select only the source systems and capabilities they need. Adding a new source system or contextualization step means adding a module — not modifying existing ones. @@ -53,15 +53,16 @@ The following are deliberately out of scope for the initial release. Excluding t | Excluded | Rationale | | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Maximo, Meridium, other CMMS** | SAP is the most common asset/maintenance source system in the target segment. Additional CMMS sources are P2+ work. | +| **`qs_enterprise_dm` and `rmdm` data model support** | v1 ships with the ISA Manufacturing Extension data model only. `qs_enterprise_dm` and `rmdm` variants (including `cdf_connection_sql` which is qs_enterprise-specific) are P1 additions once the ISA transformation set is validated end-to-end. | +| **Maximo, Meridium, other CMMS** | SAP is the most common asset/maintenance source system in the target segment. Additional CMMS sources are P2+ work. | | **OSIsoft PI Asset Framework (AF)** | `cdf_pi_foundation` covers the PI Data Archive (timeseries) via the PI .NET Extractor. PI AF hierarchy ingestion requires a separate extractor and transformation pattern; not in v1. | -| **SAP PM via IDoc / RFC** | The SAP OData extractor pattern is the primary integration. IDoc and RFC-based extractions require different tooling and are not covered. | -| **OPC-UA Historical Access (HDA)** | The OPC-UA module covers live/subscribed data. Historical data backfill via HDA is a separate configuration concern; left as a documented extension pattern. | -| **OOTB (Out-of-the-Box) Cognite project setup** | `dp:foundation` does not configure IDP, project creation, or network connectivity. It assumes a provisioned CDF project with IDP authentication already in place. | -| **Atlas AI / OOTB Agents** | AI agent deployment (`dp:atlas_ai`) is a P2 concern layered on top of a working foundation. | -| **Automated transformation unit tests** | A testing framework for verifying transformation SQL output is a P1 concern. | -| **Multi-tenant or multi-project federation** | Each deployment of `dp:foundation` targets a single CDF project. Cross-project data federation is out of scope. | -| **Sharepoint / document source system** | File ingestion from SharePoint is not included in v1. A generic `cdf_documents_foundation` module is a P1 candidate. | +| **SAP PM via IDoc / RFC** | The SAP OData extractor pattern is the primary integration. IDoc and RFC-based extractions require different tooling and are not covered. | +| **OPC-UA Historical Access (HDA)** | The OPC-UA module covers live/subscribed data. Historical data backfill via HDA is a separate configuration concern; left as a documented extension pattern. | +| **OOTB (Out-of-the-Box) Cognite project setup** | `dp:foundation` does not configure IDP, project creation, or network connectivity. It assumes a provisioned CDF project with IDP authentication already in place. | +| **Atlas AI / OOTB Agents** | AI agent deployment (`dp:atlas_ai`) is a P2 concern layered on top of a working foundation. | +| **Automated transformation unit tests** | A testing framework for verifying transformation SQL output is a P1 concern. | +| **Multi-tenant or multi-project federation** | Each deployment of `dp:foundation` targets a single CDF project. Cross-project data federation is out of scope. | +| **Sharepoint / document source system** | File ingestion from SharePoint is not included in v1. A generic `cdf_documents_foundation` module is a P1 candidate. | --- @@ -91,7 +92,7 @@ canCherryPick = true modules = [ # Core infrastructure "foundation/cdf_foundation", - "models/qs_enterprise_dm", + "models/isa_manufacturing_extension", # Source systems — deploy the ones matching your site "sourcesystem/cdf_pi_foundation", "sourcesystem/cdf_opcua_foundation", @@ -101,7 +102,6 @@ modules = [ # Contextualization "accelerators/contextualization/cdf_file_annotation", "accelerators/contextualization/cdf_entity_matching", - "accelerators/contextualization/cdf_connection_sql", # Search "accelerators/industrial_tools/cdf_search", # Contextualization quality @@ -119,7 +119,7 @@ New modules created as part of this DP: Existing modules referenced without modification: -- `models/qs_enterprise_dm` +- `models/isa_manufacturing_extension` - `accelerators/contextualization/cdf_file_annotation` - `accelerators/contextualization/cdf_entity_matching` - `accelerators/contextualization/cdf_connection_sql` @@ -135,9 +135,9 @@ Existing modules referenced without modification: │ LAYER 0 — DATA MODEL │ │ │ │ ┌───────────────────────────────────────────────────────────────────────┐ │ -│ │ models/qs_enterprise_dm [existing] │ │ -│ │ 39 views · 46 containers · 3 spaces · 2 data models │ │ -│ │ sp_enterprise_process_industry · sp_enterprise_instance │ │ +│ │ models/isa_manufacturing_extension [existing] │ │ +│ │ ISA Manufacturing Extension · views for Equipment, Asset, TimeSeries, Files │ │ +│ │ ISA-specific spaces · containers · ISA-aligned relationship model │ │ │ └───────────────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────────────┘ │ @@ -276,7 +276,7 @@ foundation/cdf_foundation/ | `rawSourceDatabase` | `ingestion` | RAW DB for source system landed data | | `rawStateDatabase` | `contextualizationState` | RAW DB for state cursors | | `rawStateTable` | `diagramParsing` | State table used by annotation and sync jobs | -| `schemaSpace` | `sp_enterprise_process_industry` | Schema space from `qs_enterprise_dm` | +| `schemaSpace` | `sp_isa_manufacturing_extension` | Schema space from `isa_manufacturing_extension` data model | | `annotationSpace` | `{{location}}_instances` | Space where annotation edges are stored | | `dataModelVersion` | `v1.0` | Data model version for transformation view references | @@ -285,15 +285,15 @@ foundation/cdf_foundation/ --- -### 2. `models/qs_enterprise_dm` *(Existing — no changes)* +### 2. `models/isa_manufacturing_extension` *(Existing — no changes)* -**Purpose**: Enterprise data model providing 39 views across Asset, Equipment, Maintenance, TimeSeries, Files, and 3D. All source system transformations in this DP write into views defined here. +**Purpose**: Extends the CDF core data model (CDM) with manufacturing-specific views covering Asset, Equipment, TimeSeries, Files, and Maintenance entities. All source system transformations in this DP write into views defined here. This module already exists in the library and is referenced without modification. **Resources** (existing, unchanged): +- Schema space for the ISA Manufacturing Extension (confirm exact `spaceId` from `module.toml`) +- Containers and Views extending CDM for manufacturing asset hierarchy, equipment, timeseries, and maintenance -- 3 Spaces (`sp_enterprise_process_industry`, `sp_enterprise_instance`, `sp_site_instance`) -- 46 Containers, 39 Views -- 2 Data Models (`qs-enterprise`, `qs-enterprise-search`) +**Key implementation note**: The exact `schemaSpace`, view external IDs, and property names that source system transformation SQL must reference should be read from the existing `module.toml` and resource YAMLs before authoring any transformation in `cdf_pi_foundation`, `cdf_opcua_foundation`, or `cdf_sap_foundation`. **Dependencies**: None @@ -585,8 +585,8 @@ The workflow has two sequential phases: The contextualization tasks included in phase 2 are determined by `dataModelVariant`: -- `qs_enterprise` → `cdf_connection_sql` transformations (maintenance order → asset, TS → equipment, etc.) -- `isa_oil_gas` → ISA-specific relationship transformations from that module +- `isa_manufacturing_extension` → ISA-specific relationship transformations from the `isa_manufacturing_extension` module (v1 default) +- `qs_enterprise` → `cdf_connection_sql` transformations (P1, added when `qs_enterprise_dm` support ships) - Future DM variants follow the same pattern Any task failure aborts the workflow (`onFailure: abortWorkflow`). @@ -620,11 +620,12 @@ enabledSources: # Which contextualization tasks to include in phase 2 # Driven by dataModelVariant — set manually only to override enabledContextualization: - connectionSql: true # auto-enabled when dataModelVariant: qs_enterprise + isaRelationships: true # auto-enabled when dataModelVariant: isa_manufacturing_extension + connectionSql: false # enable only when dataModelVariant: qs_enterprise (P1) # Selects the transformation set used in the contextualization phase -# Supported: qs_enterprise | isa_oil_gas | rmdm -dataModelVariant: qs_enterprise +# Supported: isa_manufacturing_extension (v1) | qs_enterprise (P1) | rmdm (P1) +dataModelVariant: isa_manufacturing_extension ``` `**workflow_template/tasks/**` — one snippet per task, each a self-contained YAML block: @@ -710,11 +711,14 @@ foundation/cdf_ingestion_foundation/ │ ├── task.sap_maintenance_orders.yaml │ ├── task.sap_operations.yaml │ ├── task.sap_operation_to_order.yaml -│ ├── ctx.qs_enterprise.maintenance_order_to_asset.yaml # DM-variant ctx tasks +│ ├── ctx.isa_manufacturing_extension.equipment_connections.yaml # ISA ctx tasks (v1 default) +│ ├── ctx.isa_manufacturing_extension.ts_to_equipment.yaml +│ ├── ctx.isa_manufacturing_extension.maintenance_to_functional_loc.yaml +│ ├── ctx.isa_manufacturing_extension.operation_to_order.yaml +│ ├── ctx.qs_enterprise.maintenance_order_to_asset.yaml # QS Enterprise ctx tasks (P1) │ ├── ctx.qs_enterprise.ts_to_equipment.yaml │ ├── ctx.qs_enterprise.activity_to_ts.yaml │ ├── ctx.qs_enterprise.operation_to_asset.yaml -│ ├── ctx.isa_oil_gas.asset_connections.yaml # ISA ctx tasks (P1) │ └── ctx.rmdm.asset_connections.yaml # RMDM ctx tasks (P1) ├── auth/ │ ├── grp_workflow.Group.yaml @@ -765,7 +769,7 @@ foundation/cdf_ingestion_foundation/ **Resources** (existing): 1 Location Filter. -**Dependencies**: `models/qs_enterprise_dm` (data model space). +**Dependencies**: `models/isa_manufacturing_extension` (data model space). --- @@ -812,7 +816,7 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml | Module | Status | Spaces | Datasets | RAW DBs | RAW Tables | Transformations | Workflows | Pipelines | Groups | | ------------------------------------- | -------- | ------ | -------- | ------- | ---------- | --------------- | --------- | --------- | ------ | | `foundation/cdf_foundation` | New | 2 | 2 | 1 | 0 | 0 | 0 | 0 | 4 | -| `models/qs_enterprise_dm` | Existing | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| `models/isa_manufacturing_extension` | Existing | — | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | `sourcesystem/cdf_pi_foundation` | New | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | | `sourcesystem/cdf_opcua_foundation` | New | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | | `sourcesystem/cdf_sap_foundation` | New | 0 | 0 | 1 | 7 | 6 | 0 | 1 | 0 | @@ -837,14 +841,14 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml | Deliverable | Modules | | ----------------------------------- | ----------------------------------------------------------------- | | Core project infrastructure | `foundation/cdf_foundation` | -| Enterprise data model | `models/qs_enterprise_dm` | +| ISA Manufacturing Extension data model | `models/isa_manufacturing_extension` *(new)* | | PI timeseries ingestion | `sourcesystem/cdf_pi_foundation` | | OPC-UA timeseries ingestion | `sourcesystem/cdf_opcua_foundation` | | SAP asset + maintenance ingestion | `sourcesystem/cdf_sap_foundation` | | Modular ingestion orchestration | `foundation/cdf_ingestion_foundation` | | P&ID file annotation | `accelerators/contextualization/cdf_file_annotation` *(existing)* | | Entity matching | `accelerators/contextualization/cdf_entity_matching` *(existing)* | -| SQL-based connections | `accelerators/contextualization/cdf_connection_sql` *(existing)* | +| ISA-specific relationship transforms | Part of `models/isa_manufacturing_extension` or `foundation/cdf_ingestion_foundation` ctx snippets | | Contextualization quality dashboard | `dashboards/context_quality` *(existing)* | | Scoped search filters | `accelerators/industrial_tools/cdf_search` *(existing)* | @@ -854,11 +858,14 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml **Goal**: Deployments are verifiable. A DE can confirm that transformations produce correct output before handing a project to a customer. -| Deliverable | Notes | -| --------------------------------------------------- | --------------------------------------------------------------------------------- | -| Transformation unit test framework | Test harness that validates SQL transformation output against known-good fixtures | -| Document source module (`cdf_documents_foundation`) | Generic file ingestion replacing the SharePoint-specific module | -| Multi-plant SAP validation | Verified multi-plant expansion via `sapPlants` list variable | +| Deliverable | Notes | +|---|---| +| `qs_enterprise_dm` data model support | Add `models/qs_enterprise_dm` as an alternative selectable DM; wire in `cdf_connection_sql` contextualization tasks for the `qs_enterprise` variant in `cdf_ingestion_foundation` | +| `rmdm` data model support | Add `models/rmdm_v1` as a selectable DM variant with its own contextualization task snippets | +| SQL-based connections (`cdf_connection_sql`) | Becomes available as the contextualization layer when `dataModelVariant: qs_enterprise` is selected | +| Transformation unit test framework | Test harness that validates SQL transformation output against known-good fixtures | +| Document source module (`cdf_documents_foundation`) | Generic file ingestion replacing the SharePoint-specific module | +| Multi-plant SAP validation | Verified multi-plant expansion via `sapPlants` list variable | ### P2 — v3: AI, Extended Source Systems, and Operational Tooling @@ -886,7 +893,7 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `**library` repo** (this repo) | All new modules land here; merge conflicts if other teams are actively developing in `modules/` | Coordinate with module owners; use feature branches per module | | `**gss-knowledge-base` repo** | Extractor config templates are sourced from here; changes there may need to be reflected in the DP | Pin to a specific commit or tag at release time; document the source commit in module READMEs | -| `**qs_enterprise_dm` data model** | All source system transformations reference views in this data model. A view rename or property removal in a future `qs_enterprise_dm` version will break the foundation transformations without a coordinated update | Transformation SQL should reference the model via the `{{dataModelVersion}}` variable; bump the variable when upgrading; pin the model version used in v1 explicitly | +| **`isa_manufacturing_extension` schema evolution** | The existing module may receive view or property changes in future library releases. Any such change will break the foundation source system transformations without a coordinated update | Pin the `dataModelVersion` variable to the version used at build time. Reference all view IDs and spaces via `{{schemaSpace}}` and `{{dataModelVersion}}` variables — a version bump stays a config change, not a code change. Read the existing module's `module.toml` before authoring any transformation SQL. | | **CDF Toolkit version** | Module YAML syntax, WorkflowVersion schema, and variable substitution behaviour are Toolkit-version-dependent. A Toolkit major version bump may require YAML updates | Document the minimum supported Toolkit version in `module.toml`; test against the pinned version in CI | | **CDF Workflows API** | The ingestion workflow uses the Workflows API (GA). Behaviour changes to `concurrencyPolicy`, `onFailure`, or task types would require workflow YAML updates | Monitor CDF release notes; the two-phase task graph is relatively simple and low-risk | @@ -913,7 +920,7 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml A Python script reads `enabledSources` flags from `default.config.yaml`, assembles only the relevant per-task snippets from `workflow_template/tasks/`, and writes the final `WorkflowVersion.yaml` before `cdf deploy` runs. The generated file is committed to the repo. CDF only ever sees a static YAML that references transformations that are actually deployed. -This also resolves the DM-variant contextualization task selection: `dataModelVariant: qs_enterprise` pulls in `cdf_connection_sql` task snippets; `dataModelVariant: isa_oil_gas` pulls in ISA-specific snippets. The workflow YAML structure is identical — only the task set differs. +This also resolves the DM-variant contextualization task selection: `dataModelVariant: isa_manufacturing_extension` (v1 default) pulls in ISA-specific relationship task snippets; `dataModelVariant: qs_enterprise` (P1) pulls in `cdf_connection_sql` snippets. The workflow YAML structure is identical — only the task set differs. A `--check` flag on the script validates in CI that the committed YAML matches what the current config would generate, preventing drift. From b003f3a0db13482d19e65ca9c44512d79521dc6f Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Mon, 27 Apr 2026 12:40:48 +0530 Subject: [PATCH 06/18] update in PRD --- PRD.md | 61 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 48 insertions(+), 13 deletions(-) diff --git a/PRD.md b/PRD.md index ca1a8406..4829a0b5 100644 --- a/PRD.md +++ b/PRD.md @@ -2,7 +2,7 @@ ## Overview -The **Foundation Deployment Pack** (`dp:foundation`) is a scalable, modular CDF deployment package that gives industrial projects a well-structured starting point. It covers the full stack from source system extraction through contextualization: production-grade extractor configuration templates for PI, OPC-UA, and SAP; the ISA Manufacturing Extension data model; a modular ingestion orchestration workflow; and contextualization capabilities including file annotation and entity matching. +The **Foundation Deployment Pack** (`dp:foundation`) is a scalable, modular CDF deployment package that gives industrial projects a near zero-configuration starting point. It covers the full stack from source system extraction through contextualization: production-grade extractor configuration templates for PI, OPC-UA, and SAP; the ISA Manufacturing Extension data model; a modular ingestion orchestration workflow; and contextualization capabilities including file annotation and entity matching. Every module is independently deployable. The package supports `canCherryPick = true`, so teams select only the source systems and capabilities they need. Adding a new source system or contextualization step means adding a module — not modifying existing ones. @@ -12,7 +12,7 @@ Every module is independently deployable. The package supports `canCherryPick = ### Who is this for? -The primary users of `dp:foundation` are **Data Engineers (DEs)** and **Cognite partners** who are responsible for standing up CDF environments for industrial customers. Secondary users are **Solutions Architects** who define the project structure before a DE takes over, and — in more self-serve engagements — **technically capable customers** who own their own CDF configuration. +The primary users of `dp:foundation` are **Data Engineers (DEs)** and **Cognite partners** who are responsible for standing up CDF environments for industrial customers. The DP is also well-suited for **POC and quickstart projects** where speed of deployment matters as much as long-term scalability. Secondary users are **Solutions Architects** who define the project structure before a DE takes over. ### What is the pain today? @@ -29,8 +29,10 @@ The result is that each new deployment is partially reinvented, slowing delivery `dp:foundation` gives DEs and partners a single, composable starting point they can deploy to a real customer project on day one: -- Extractor configuration templates for the three most common industrial source systems are bundled and ready — no gss-knowledge-base or other lookup required. -- The project structure (spaces, datasets, groups, data model, orchestration) is standardised and parameterised by `location` — a new site is a new variable value, not a new set of files. +- A near **zero-configuration deployment**: the DP deploys and runs without significant initial configuration beyond filling in credentials and a `location` variable. +- Extractor configuration templates for the three most common industrial source systems are bundled — no gss-knowledge-base lookup required. +- Transformations are provided as **generalized examples and AI/Cursor scaffolds**, not universally valid production SQL. They are guided by cursor rules (see `.cursor/rules/cdf-transformations.mdc`) so DEs can use them as input to AI tools to generate site-specific SQL rapidly. +- The project structure is standardised and parameterised by `location` — a new site is a new variable value, not a new set of files. - Contextualization is a first-class, deployable capability, not an afterthought. - The architecture is open for extension (add a module, set a variable) rather than modification (fork and edit). @@ -38,11 +40,13 @@ The result is that each new deployment is partially reinvented, slowing delivery ## Goals -- Provide a complete, deployable CDF project structure: spaces, datasets, auth groups, data model, extraction pipelines, transformations, ingestion orchestration, and contextualization. +- Provide a **near zero-configuration** CDF project foundation: deploy and run with minimal initial setup beyond credentials and a `location` identifier. - Ship production-grade extractor configuration templates for **PI**, **OPC-UA**, and **SAP** sourced from gss-knowledge-base, so field engineers get a real starting point with all required parameters documented. +- Ship transformation SQL as **generalized examples and AI/Cursor scaffolds**, guided by cursor rules (`.cursor/rules/cdf-transformations.mdc`), that DEs can adapt rapidly for site-specific data. - Each source system module is self-contained and independently deployable — no module fails to deploy because another is absent. - Ingestion orchestration is source-agnostic: configuring which transformations run in which phase is the only customization required when adding or removing a source system. -- Contextualization modules (file annotation, entity matching, SQL connections) and a contextualization quality dashboard are first-class parts of this DP. +- Contextualization modules (file annotation, entity matching) and a contextualization quality dashboard are first-class parts of this DP. +- Include a **CLI-based configuration wizard (P1)** to guide users through auth, source system selection, and initial variable setup. --- @@ -63,6 +67,9 @@ The following are deliberately out of scope for the initial release. Excluding t | **Automated transformation unit tests** | A testing framework for verifying transformation SQL output is a P1 concern. | | **Multi-tenant or multi-project federation** | Each deployment of `dp:foundation` targets a single CDF project. Cross-project data federation is out of scope. | | **Sharepoint / document source system** | File ingestion from SharePoint is not included in v1. A generic `cdf_documents_foundation` module is a P1 candidate. | +| **Japanese / multi-language localization** | Japanese labels for view and property names are a future consideration. Not in v1 scope. | +| **CI/CD pipeline templates for ADO** | Many projects are ADO-based rather than GitHub-based. A "sister" package of ADO CI/CD pipeline templates is a valid need but a separate initiative around SOPs and branching strategy templates. | +| **Module dependency auto-resolution** | Automatically resolving and prompting the user to include dependent modules is a desirable UX improvement but deferred to a later toolkit-level enhancement (P1). | --- @@ -72,7 +79,8 @@ The following are deliberately out of scope for the initial release. Excluding t | Persona | How this DP helps | | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | -| **Field Engineers** setting up a new customer project | Drop-in extractor config templates (PI, OPC-UA, SAP) with all required parameters pre-documented; fill in credentials and run | +| **Field Engineers / DEs** setting up a new customer project | Drop-in extractor config templates with all parameters documented; near zero-config start; transformations as AI scaffolds rather than manual SQL | +| **POC / quickstart projects** | Fast, consistent baseline that deploys in a day without demo data or synthetic coupling | | **Solutions Architects** designing a scalable CDF project | Modular structure grows by adding modules, not by forking; shared variable contract means location-specific config lives in one place | | **Customers** deploying CDF for the first time | Clear, layered architecture from data model → source systems → orchestration → contextualization; cherry-pick only what applies | @@ -122,10 +130,13 @@ Existing modules referenced without modification: - `models/isa_manufacturing_extension` - `accelerators/contextualization/cdf_file_annotation` - `accelerators/contextualization/cdf_entity_matching` -- `accelerators/contextualization/cdf_connection_sql` - `accelerators/industrial_tools/cdf_search` - `dashboards/context_quality` +P1 additions (not in v1 package): + +- `accelerators/contextualization/cdf_connection_sql` *(enabled when `dataModelVariant: qs_enterprise`)* + --- ### Module Dependency Flow @@ -147,8 +158,8 @@ Existing modules referenced without modification: │ │ │ ┌───────────────────────────────────────────────────────────────────────┐ │ │ │ foundation/cdf_foundation [new] │ │ -│ │ Spaces · Datasets · Auth groups · Base RAW database │ │ -│ │ Defines: location, organization, schemaSpace, instanceSpace vars │ │ +│ │ Spaces · Datasets · Auth groups (scope hierarchy) · RAW databases │ │ +│ │ Superset of cdf_common — compatible variable contract │ │ │ └───────────────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────────────┘ │ │ │ @@ -218,6 +229,8 @@ Existing modules referenced without modification: **Purpose**: Project-scoped infrastructure shared by all modules in this DP. Creates the spaces, datasets, auth groups, and RAW databases that every source system and contextualization module references. Defines the canonical set of template variables used across the entire DP. +**Auth group design** follows a coarse macro-group model covering: `admins`, `readonly`, `extractors`, `functions`, `workflow` — each scoped to the project dataset and instance spaces. A default global config is provided; DEs customise scope hierarchy per project (global config → site-specific override pattern) as needed. + `cdf_foundation` is designed as a strict superset of `accelerators/cdf_common`. It creates all the same resources that `cdf_common` creates — the instance space, function space, ingestion dataset, RAW source database, RAW state database, and state table — using the same variable names so that existing modules (`cdf_file_annotation`, `cdf_entity_matching`, `cdf_connection_sql`, `cdf_ingestion_foundation`) that were written against the `cdf_common` variable contract work without changes. The annotation-specific CDF Function (`contextualization_connection_writer`) and ExtractionPipeline (`ctx_files_direct_relation_write`) from `cdf_common` are not included — those belong to `cdf_file_annotation`. On top of what `cdf_common` provides, `cdf_foundation` adds auth groups and a foundation dataset scoped to the deployment. @@ -336,6 +349,7 @@ Key customer-configured parameters: **Transformation notes**: +- SQL is provided as a **generalized scaffold** targeting ISA Manufacturing Extension views. Use with cursor rules (`.cursor/rules/cdf-transformations.mdc`) to adapt to site-specific tag naming and metadata properties. - Maps PI tag name → `externalId` with `pi:` prefix - Writes to `CogniteTimeSeries` view in `{{instanceSpace}}` - `sysTagsFound` is populated by default (opt-out via `populateSysTagsFound: false` in `default.config.yaml`) to maintain downstream contextualization compatibility @@ -417,6 +431,7 @@ Key customer-configured parameters: **Transformation notes**: +- SQL is provided as a **generalized scaffold** targeting ISA Manufacturing Extension views. Use with cursor rules (`.cursor/rules/cdf-transformations.mdc`) to adapt to site-specific node naming. - OPC-UA extractor writes node metadata to `db_{{location}}_opcua:nodes` (RAW) - Transformation reads RAW and maps to `CogniteTimeSeries` view in `{{instanceSpace}}` - External ID: `opcua:` @@ -460,7 +475,7 @@ sourcesystem/cdf_opcua_foundation/ ### 5. `sourcesystem/cdf_sap_foundation` *(New)* -**Purpose**: Ingest SAP functional locations, equipment master records, maintenance orders, and work operations into CDF RAW via the SAP OData Extractor, then transform into the enterprise data model. Consolidates what would otherwise be separate asset and events modules into a single cohesive SAP source system module — since both share the same extractor, authentication, and data model target. +**Purpose**: Ingest SAP functional locations, equipment master records, maintenance orders, and work operations into CDF RAW via a **single SAP OData extraction pipeline with multiple entity queries** configured within it (flocs, equipment, work orders, operations, notifications). Transformations are split by entity type to enable correct workflow sequencing (assets → equipment → equipment-to-asset → maintenance orders → operations). Single-plant by default; multi-plant via `sapPlants` list variable. Transformation SQL is provided as generalized scaffolds — no synthetic/sample data. Ships with a complete SAP OData extractor configuration template sourced from gss-knowledge-base with single-plant default and multi-plant expansion support via a plant list variable. @@ -525,6 +540,7 @@ Key customer-configured parameters: **Transformation notes**: +- SQL is provided as **generalized scaffolds** targeting ISA Manufacturing Extension views. Use with cursor rules (`.cursor/rules/cdf-transformations.mdc`) to adapt to site-specific SAP entity naming and structure. - All SQL uses `{{location}}`, `{{organization}}`, `{{sapSystem}}`, `{{instanceSpace}}`, `{{schemaSpace}}` variables — no hardcoded site names - `sysTagsFound` populated on `MaintenanceOrder` for downstream connection compatibility (opt-out via `populateSysTagsFound: false`) @@ -853,13 +869,15 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml | Scoped search filters | `accelerators/industrial_tools/cdf_search` *(existing)* | -### P1 — v2: Quality and Testing +### P1 — v2: Quality, Testing, and Usability -**Goal**: Deployments are verifiable. A DE can confirm that transformations produce correct output before handing a project to a customer. +**Goal**: Deployments are verifiable and easier to configure. A DE can confirm that transformations produce correct output before handing a project to a customer, and new users can be guided through setup without reading documentation. | Deliverable | Notes | |---|---| +| **CLI configuration wizard** | Interactive `cdf init` style wizard that guides users through auth setup, source system selection, and initial variable population — reduces time-to-first-deploy for new DEs | +| **Module dependency auto-resolution** | When a package depends on another, automatically resolve and prompt the user to include it (toolkit-level enhancement) | | `qs_enterprise_dm` data model support | Add `models/qs_enterprise_dm` as an alternative selectable DM; wire in `cdf_connection_sql` contextualization tasks for the `qs_enterprise` variant in `cdf_ingestion_foundation` | | `rmdm` data model support | Add `models/rmdm_v1` as a selectable DM variant with its own contextualization task snippets | | SQL-based connections (`cdf_connection_sql`) | Becomes available as the contextualization layer when `dataModelVariant: qs_enterprise` is selected | @@ -908,6 +926,7 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml | **OPC-UA node filter requirements** | High | Low | OPC-UA node structure is highly site-specific. The extractor config template ships with commented-out example filters. Without correct filters, the extractor will browse the full OPC-UA server tree, which may be very large and slow. DEs must configure filters before production use — this should be explicitly documented. | | `**cdf_foundation` vs `cdf_common` variable conflict** | Low | High | If an existing module is deployed with `cdf_common` and then `cdf_foundation` is introduced in the same project, and the variable values differ (e.g., different `instanceSpace` defaults), resources may be duplicated or point to the wrong space. The two modules should not be deployed together in the same project. | | **Workflow generation script correctness** | Low | Medium | The `build_workflow.py` script must correctly wire `dependsOn` chains when only a subset of sources is enabled (e.g. if SAP is disabled, tasks that depend on SAP transformations must not reference them). The script should validate dependency integrity at generation time and fail loudly on inconsistencies. CI `--check` flag prevents drift between config and committed YAML. | +| **Transformation generalization limits** | High | Medium | Transformation SQL scaffolds are generalized examples, not universally valid production SQL. Site-specific column names, SAP entity keys, PI tag formats, and OPC-UA node structures will require DE customisation. The cursor rules (`.cursor/rules/cdf-transformations.mdc`) guide AI-assisted adaptation, but DEs must validate output against real source data before handing over to customers. | --- @@ -959,8 +978,24 @@ The WorkflowVersion YAML schema and variable substitution syntax are Toolkit-ver --- +### Q5 — Transformation scaffold validation approach *(open)* + +Since transformations are generalized scaffolds rather than universally valid SQL, we need a clear approach for how DEs validate them before going live: + +- **Option A**: Document a manual validation checklist — DE runs the transformation in preview mode against a sample of real RAW data and checks output. +- **Option B**: Ship a transformation unit test framework (P1) with known-good RAW fixtures and expected DM output, runnable locally. +- **Option C**: Provide a validation Streamlit app or notebook that runs the scaffolds against sample data and reports mismatches. + +A decision is needed before P1 — the cursor rules alone are not sufficient as a quality gate for customer-facing deployments. + +--- + ## Success Metrics +### Near zero-config (usability check) + +- A DE deploys a working environment (foundation + one source system + workflow) by filling in ≤ 10 variables and running `cdf deploy` — without consulting additional documentation or requesting help. + ### Deployment health (binary checks) - `dp:foundation` deploys cleanly to a brand-new CDF project with no prior resources and no errors. From 8673a6d696ee39a8f8bd45c81662c2d5b0470cb9 Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Tue, 12 May 2026 09:09:33 +0200 Subject: [PATCH 07/18] foundational DP source system modules --- .../cdf_opcua_foundation/README.md | 101 +++---- .../cdf_opcua_foundation/default.config.yaml | 18 +- .../ep_opcua.ExtractionPipeline.Config.yaml | 263 +++++------------- .../ep_opcua.ExtractionPipeline.yaml | 108 ++----- .../tr_opcua_timeseries.Transformation.sql | 50 ++++ .../tr_opcua_timeseries.Transformation.yaml | 14 + .../sourcesystem/cdf_pi_foundation/README.md | 96 ++++--- .../cdf_pi_foundation/default.config.yaml | 13 +- .../ep_pi.ExtractionPipeline.Config.yaml | 54 ++-- .../ep_pi.ExtractionPipeline.yaml | 17 +- .../cdf_pi_foundation/raw/db_pi.Database.yaml | 1 + .../tr_pi_timeseries.Transformation.sql | 48 ++++ .../tr_pi_timeseries.Transformation.yaml | 14 + .../sourcesystem/cdf_sap_foundation/README.md | 142 ++++++---- .../cdf_sap_foundation/default.config.yaml | 18 +- .../ep_sap.ExtractionPipeline.Config.yaml | 13 +- .../raw/db_sap.Database.yaml | 1 + .../tr_sap_assets.Transformation.sql | 40 +++ .../tr_sap_assets.Transformation.yaml | 14 + .../tr_sap_equipment.Transformation.sql | 22 ++ .../tr_sap_equipment.Transformation.yaml | 14 + ..._sap_equipment_to_asset.Transformation.sql | 23 ++ ...sap_equipment_to_asset.Transformation.yaml | 14 + ..._sap_maintenance_orders.Transformation.sql | 33 +++ ...sap_maintenance_orders.Transformation.yaml | 14 + ..._sap_operation_to_order.Transformation.sql | 39 +++ ...sap_operation_to_order.Transformation.yaml | 14 + .../tr_sap_operations.Transformation.sql | 35 +++ .../tr_sap_operations.Transformation.yaml | 14 + 29 files changed, 794 insertions(+), 453 deletions(-) create mode 100644 modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql create mode 100644 modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml create mode 100644 modules/sourcesystem/cdf_pi_foundation/raw/db_pi.Database.yaml create mode 100644 modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.sql create mode 100644 modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/db_sap.Database.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.sql create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.sql create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.sql create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.sql create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.sql create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.sql create mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.yaml diff --git a/modules/sourcesystem/cdf_opcua_foundation/README.md b/modules/sourcesystem/cdf_opcua_foundation/README.md index ac87b6a1..b1450729 100644 --- a/modules/sourcesystem/cdf_opcua_foundation/README.md +++ b/modules/sourcesystem/cdf_opcua_foundation/README.md @@ -1,7 +1,8 @@ # OPC-UA Foundation Module -This module ingests OPC-UA node metadata, references, and subscription state into CDF RAW. OPC-UA timeseries values (measurements) are written directly to CDF by the OPC-UA Extractor — RAW is used for node metadata (name, description, data type), reference structure, and extractor browse/state caches to provide an audit trail and enable downstream contextualization. Transformations from RAW into the ISA Manufacturing Extension data model are not shipped here; author them downstream as needed. +This module ingests OPC-UA node metadata from an OPC-UA server into CDF RAW, then transforms it into `ISATimeSeries` data model instances in the ISA Manufacturing Extension. OPC-UA timeseries values (measurements) are written directly to CDF by the OPC-UA Extractor — RAW is used for node metadata (name, description, data type) to ensure consistency with PI and SAP modules and to provide an audit trail. +The extractor configuration template is sourced from `gss-knowledge-base` and includes all required parameters with documentation. > **Node filters must be configured before production use.** Without filters the extractor browses the full OPC-UA server tree, which may be very large and slow. See the extractor config for commented-out examples. @@ -10,19 +11,17 @@ This module ingests OPC-UA node metadata, references, and subscription state int ``` cdf_opcua_foundation/ ├── extraction_pipelines/ -│ ├── ep_opcua.ExtractionPipeline.yaml # Pipeline definition with RAW table references +│ ├── ep_opcua.ExtractionPipeline.yaml # Pipeline definition with RAW table reference │ └── ep_opcua.ExtractionPipeline.Config.yaml # Full OPC-UA Extractor config template ├── raw/ │ └── db_opcua.Database.yaml # db_{{location}}_opcua +├── transformations/ +│ ├── tr_opcua_timeseries.Transformation.yaml # Targets ISATimeSeries view +│ └── tr_opcua_timeseries.Transformation.sql # Scaffold SQL — adapt before production use ├── default.config.yaml └── module.toml ``` -> **Note:** This foundation module ingests OPC-UA data into RAW (and Asset/TS -> directly). Transformations from RAW into the ISA Manufacturing Extension data -> model are not yet shipped with this module — see -> `.cursor/rules/cdf-transformations.mdc` for guidance on authoring them. - ## Data Flow ``` @@ -31,12 +30,15 @@ OPC-UA Server ▼ OPC-UA Extractor │ - ├── Variable values ──────────► CDF Timeseries (direct write) - ├── Object nodes ──────────► RAW: assets - ├── Variable nodes ──────────► RAW: timeseries - ├── References ──────────► RAW: relationships - ├── Browse cache ──────────► RAW: known_objects, known_references, known_variables - └── Subscription state ────────► RAW: state-store-variables + ├── Timeseries values ──────────────────► CDF Timeseries (direct write) + │ + └── Node metadata (name, desc, type) ──► RAW: db_{{location}}_opcua.nodes + │ + ▼ + Transformation: tr_{{location}}_opcua_timeseries + │ + ▼ + ISATimeSeries DM instances in {{instanceSpace}} ``` ## Resources Created @@ -44,24 +46,27 @@ OPC-UA Extractor | Resource | External ID | Purpose | |---|---|---| | ExtractionPipeline | `ep_{{location}}_opcua` | Pipeline health tracking and config delivery | -| RAW Database | `db_{{location}}_opcua` | OPC-UA node metadata + state landing zone | +| RAW Database | `db_{{location}}_opcua` | OPC-UA node metadata landing zone | +| Transformation | `tr_{{location}}_opcua_timeseries` | RAW metadata → ISATimeSeries DM instances | ## Configuration -All variables are declared locally in `default.config.yaml` (no inheritance): - ```yaml variables: modules: cdf_opcua_foundation: - location: "site1" # Site code, used in externalIds (ep__opcua, db__opcua) - instanceSpace: "sp_instances" # DM space for ISATimeSeries / CogniteTimeSeries instances - dataset: "ds_opcua" # dataSetExternalId for the pipeline and RAW database - - integration_owner_name: "Integration Owner" # Technical contact for the pipeline + location: "site1" + instanceSpace: "sp_isa_instance_space" + schemaSpace: "sp_isa_manufacturing" + dataModelVersion: "v1" + dataset: "ds_opcua" + opcuaIdPrefix: "opcua:" + opcuaPublishingInterval: 5000 + opcuaSamplingInterval: 5000 + populateSysTagsFound: true + integration_owner_name: "Integration Owner" integration_owner_email: "integration.owner@example.com" - - data_owner_name: "Data Owner" # Business contact for the data + data_owner_name: "Data Owner" data_owner_email: "data.owner@example.com" ``` @@ -76,42 +81,27 @@ Set these on the host running the OPC-UA Extractor: | `OPCUA_PASSWORD` | OPC-UA server password | | `CDF_PROJECT` | CDF project name | | `CDF_URL` | CDF base URL (e.g. `https://api.cognitedata.com`) | -| `IDP_TENANT_ID` | IDP tenant ID | +| `IDP_TENANT_ID` | IdP tenant ID | | `IDP_CLIENT_ID` | Service account client ID | | `IDP_CLIENT_SECRET` | Service account client secret | ## Verify Before Deploy -OPC-UA node structure is highly site-specific. The extractor config ships with -sensible defaults but several aspects must be configured before production use: - -1. **Node filters** — without filters the extractor browses the entire server - tree, which can be very large on industrial OPC-UA servers. Obtain the - namespace and node IDs from the site OPC-UA administrator (or browse with a - tool like UA Expert), then uncomment and adapt the - `extraction.transformations` block in - `ep_opcua.ExtractionPipeline.Config.yaml`. Start with `Include` rules for - the Object nodes that contain your data, then `Include` the Variable nodes - you need. -2. **Endpoint URLs** — the documentation block in - `ep_opcua.ExtractionPipeline.yaml` lists primary/secondary endpoints as - examples; replace with the actual server addresses for your site. -3. **Certificate storage** — by default the OPC-UA extractor stores - certificates in the OS user store. For service-account deployments, edit - `config/opc.ua.net.extractor.Config.xml` to point at a known directory (see - the install instructions in `ep_opcua.ExtractionPipeline.yaml`). - -See `.cursor/rules/cdf-transformations.mdc` for AI-assisted guidance when -authoring the downstream transformations into ISA Manufacturing Extension. +1. **Node filters** — configure `extraction.transformations` in `ep_opcua.ExtractionPipeline.Config.yaml` before production. +2. **Endpoint URL** — set `OPCUA_ENDPOINT_URL` to your server's address. +3. **Certificates** — for production, set `auto-accept: false` and configure certificate storage per OPC-UA extractor docs. + +## Transformation SQL — Important Note + +`tr_opcua_timeseries.Transformation.sql` is a **generalized scaffold**. Column names (`Id`, `DisplayName`, `Description`, `DataType`, `NodeClass`) reflect the default OPC-UA Extractor RAW schema when `store-raw-metadata: true` is set. Preview against your actual RAW data before production use. See `.cursor/rules/cdf-transformations.mdc` for AI-assisted adaptation guidance. ## Getting Started ### Prerequisites -- `models/isa_manufacturing_extension` deployed (downstream target) +- `models/isa_manufacturing_extension` deployed - OPC-UA Extractor installed and network-accessible to the OPC-UA server -- Extractor service account with read/write to the `db_{{location}}_opcua` RAW - database and read access to the `{{dataset}}` data set +- Extractor service account with read/write to `db_{{location}}_opcua` and the `{{dataset}}` data set - Node filters configured in the extractor config ### Deploy @@ -122,7 +112,20 @@ cdf deploy modules/sourcesystem/cdf_opcua_foundation --env your-environment ### Configure and run the extractor -The extractor config is delivered via the `ep_{{location}}_opcua` extraction pipeline in CDF. Set the environment variables on the extractor host and start the extractor — it will pull its config from CDF automatically. +Set environment variables on the extractor host and start the extractor — it pulls config from `ep_{{location}}_opcua` automatically. + +### Run the transformation + +```bash +cdf transformations run tr_{{location}}_opcua_timeseries --env your-environment +``` + +### Verify + +Check that `ISATimeSeries` instances appear in `{{instanceSpace}}` in CDF Data Explorer. +## Dependencies +**Depends on**: `models/isa_manufacturing_extension` +**Used by**: `foundation/cdf_ingestion_foundation` (references `tr_{{location}}_opcua_timeseries` in the ingestion workflow) diff --git a/modules/sourcesystem/cdf_opcua_foundation/default.config.yaml b/modules/sourcesystem/cdf_opcua_foundation/default.config.yaml index 1fccc5af..913f52e4 100644 --- a/modules/sourcesystem/cdf_opcua_foundation/default.config.yaml +++ b/modules/sourcesystem/cdf_opcua_foundation/default.config.yaml @@ -3,12 +3,28 @@ # Site/location code, used in externalIds (e.g. ep_{{location}}_opcua, db_{{location}}_opcua) location: "site1" -# DM space where ISATimeSeries / CogniteTimeSeries instances are written +# DM space where ISATimeSeries instances are written instanceSpace: "sp_isa_instance_space" +# Schema space for ISA Manufacturing Extension views (used by transformations) +schemaSpace: "sp_isa_manufacturing" + +# Data model view version +dataModelVersion: "v1" + # dataSetExternalId for the extraction pipeline and RAW database dataset: "ds_opcua" +# External ID prefix for all OPC-UA node timeseries instances +opcuaIdPrefix: "opcua:" + +# OPC-UA subscription settings (milliseconds) +opcuaPublishingInterval: 5000 +opcuaSamplingInterval: 5000 + +# Set to false to omit sysTagsFound population (used by downstream SQL contextualization) +populateSysTagsFound: true + # Integration owner (technical contact for the pipeline) integration_owner_name: "Integration Owner" integration_owner_email: "integration.owner@example.com" diff --git a/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.Config.yaml b/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.Config.yaml index 7260eb50..8bbafdad 100644 --- a/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.Config.yaml +++ b/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.Config.yaml @@ -1,198 +1,85 @@ externalId: "ep_{{location}}_opcua" dataSetExternalId: "{{dataset}}" + config: + # OPC-UA Extractor configuration template + # Source: gss-knowledge-base/extractors/toolkit_examples/opcua_extractor_speira_quickstart + # + # Environment variables required on the extractor host (local config.yml): + # CDF_PROJECT, CDF_URL, IDP_TENANT_ID, IDP_CLIENT_ID, IDP_CLIENT_SECRET + # OPCUA_ENDPOINT_URL — e.g. opc.tcp://192.168.1.10:4840 + # OPCUA_USER — OPC-UA server username (omit if anonymous) + # OPCUA_PASSWORD — OPC-UA server password + version: 1 + + logger: + console: + level: information + file: + level: information + path: "logs/log.log" + retention-limit: 31 + rolling-interval: day + + extraction: + # External ID prefix — all OPC-UA nodes will be created as "opcua:" in CDF + id-prefix: "{{opcuaIdPrefix}}" + + status-codes: + status-codes-to-ingest: GoodOnly + ingest-status-codes: false + + # Write node metadata to RAW for transformation into ISATimeSeries DM instances + raw: + database: "db_{{location}}_opcua" + table: nodes + store-raw-metadata: true + + data-set: + external-id: "{{dataset}}" + source: - # Primary OPC-UA server endpoint. Replace host/port with your server. - endpoint-url: opc.tcp://opcua-server-primary.example.com:4840 # TODO: Update with actual endpoint - # Optional redundant endpoints — used when the primary becomes unavailable - # or when monitor-service-level switches to a healthier server. - alt-endpoint-urls: - - opc.tcp://opcua-server-secondary.example.com:4840 # TODO: Update with actual secondary endpoint - redundancy: - service-level-threshold: 200 - reconnect-interval: 10m - monitor-service-level: true - # Service account on the OPC-UA server with read access. + endpoint-url: ${OPCUA_ENDPOINT_URL} username: ${OPCUA_USER} password: ${OPCUA_PASSWORD} - secure: true - auto-accept: false - publishing-interval: 500 - browse-nodes-chunk: 1000 - browse-chunk: 1000 - subscription-chunk: 500 - attributes-chunk: 5000 - keep-alive-interval: 60000 + # Accept server certificate automatically (set to false and configure certificates for production) + auto-accept: true browse-throttling: - max-per-minute: 60 - max-parallelism: 1 - max-node-parallelism: 0 - retries: - timeout: 0 - max-tries: 10 - max-delay: 20s - initial-delay: 2s - retry-status-codes: - - 2150694912 - - 2148007936 - - 2150105088 - - 2156199936 - extraction: - # Prefix used for all CDF externalIds created from OPC-UA nodes. - id-prefix: "opcua_{{location}}_" - # Map verbose OPC-UA namespace URIs to short prefixes used in node IDs. - # Replace the example URIs with the namespaces exposed by your server. - namespace-map: - http://opcfoundation.org/UA/: 'base:' - http://www.example.com/: 'c:' - http://www.example.com/{{location}}: '{{location}}:' - http://www.example.com/{{location}}2: '{{location}}2:' - http://www.OPCFoundation.org/UA/2013/01/ISA95: 'isa95:' - # Root node to start browsing from. Adjust namespace and node-id to your server. - root-node: - namespace-uri: "http://www.example.com/Site1" - node-id: "s=Site1.Root" - update: - objects: - name: true - description: true - context: true - metadata: true - variables: - name: true - description: true - context: true - metadata: true - deletes: - enabled: true - delete-marker: "deleted" - status-codes: - status-codes-to-ingest: All - ingest-status-codes: true - data-types: - allow-string-variables: true - auto-identify-types: true - data-type-metadata: true - expand-node-ids: true - append-internal-values: true - node-types: - metadata: true - # Re-browse the server tree daily at 22:10 to pick up new/removed nodes. - auto-rebrowse-period: 10 22 * * * + max-per-minute: 200 + max-parallelism: 3 + subscriptions: - sampling-interval: 0 - queue-length: 20 - data-points: true - events: true - log-bad-values: true - data-change-filter: - trigger: "StatusValueTimestamp" - events: - enabled: true - history: true - discover-emitters: false - read-server: false - # Emit events from the server root node. Replace with site-specific emitter - # node IDs if your server exposes dedicated event sources. - emitter-ids: - - namespace-uri: "http://www.example.com/Site1" - node-id: "i=0" - historizing-emitter-ids: - - namespace-uri: "http://www.example.com/Site1" - node-id: "i=0" - history: - error-threshold: 100 - enabled: true - restart-period: 0 */6 * * * - data: true - backfill: false - data-chunk: 1000 - data-nodes-chunk: 1000 - event-chunk: 0 - event-nodes-chunk: 10 - start-time: 30d-ago - end-time: 1d - throttling: - max-per-minute: 8000 - max-parallelism: 1 - max-node-parallelism: 0 - state-storage: - location: 'db_{{location}}_opcua' - database: Raw - variable-store: state-store-variables - event-store: state-store-events - interval: 10 - cognite: - cdf-throttling: - time-series: 5 - assets: 10 - # Tune these down from defaults if you see HTTP 429 responses from CDF. - data-points: 5 - raw: 5 - ranges: 10 - events: 1 - cdf-retries: - max-retries: 10 - max-delay: 20000 - cdf-chunking: - time-series: 500 - assets: 500 - data-point-time-series: 5000 - data-point-delete: 5000 - data-point-list: 50 - data-points: 50000 - raw-rows: 5000 - events: 500 - sdk-logging: - disable: false - level: information - read-extracted-ranges: true - data-set: - external-id: '{{dataset}}' - metadata-targets: - clean: - assets: true - timeseries: true - relationships: true - space: '{{instanceSpace}}' - source: "OPCUA" + publishing-interval: {{opcuaPublishingInterval}} + sampling-interval: {{opcuaSamplingInterval}} - raw: - database: 'db_{{location}}_opcua' - assets-table: 'assets' - timeseries-table: 'timeseries' - relationships-table: 'relationships' - raw-node-buffer: - enable: true - database: 'db_{{location}}_opcua' - assets-table: 'assets' - timeseries-table: 'timeseries' - browse-on-empty: true - metadata-mapping: - timeseries: - "EngineeringUnits": "unit" - logger: - console: - level: debug - file: - level: information - path: logs/opcua_log.txt - retention-limit: 336 - rolling-interval: hour - ua-trace-level: info - trace-listener: - level: info - failure-buffer: - enabled: true - datapoint-path: buffer.bin - event-path: "buffer-events.bin" - # 10 GB local buffer for datapoints + events when CDF is unreachable. - max-buffer-size: 10000000000 - metrics: - # Optional Prometheus push-gateway for extractor metrics. - push-gateways: - - host: https://opcua-pushgw.example.com/ - job: '{{prometheus-job-name}}' - username: ${PROMETHEUS_USER} - password: ${PROMETHEUS_PASSWORD} \ No newline at end of file + # IMPORTANT: Node filters MUST be configured before production use. + # Without filters the extractor browses the full OPC-UA server tree. + # + # Example (uncomment and adapt): + # extraction: + # transformations: + # - type: Include + # filter: + # node-class: Object + # name: + # - "Objects" + # - "Site_Area_1" + # - type: Include + # filter: + # node-class: Variable + # name: + # - "Temperature_Tag_1" + # - type: Ignore + # filter: + # node-class: Variable + # name: + # - "InternalDiagnostic_*" + + # History backfill (disabled by default — enable for initial data load) + # history: + # enabled: true + # start-time: "2024-01-01T00:00:00Z" + # throttling: + # max-per-minute: 200 + # max-parallelism: 3 diff --git a/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.yaml b/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.yaml index 58b432cb..1e5776bf 100644 --- a/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.yaml +++ b/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.yaml @@ -1,40 +1,24 @@ externalId: "ep_{{location}}_opcua" name: "ep:{{location}}:opcua" dataSetExternalId: "{{dataset}}" -description: "OPC-UA Extractor pipeline for site {{location}} — reads node hierarchy and Variable subscriptions, writes timeseries values directly to CDF and node metadata + browse/state caches to RAW" -# RAW tables used by the OPC-UA extractor for staging and state storage. -# These names align with the database/table references in -# ep_opcua.ExtractionPipeline.Config.yaml (raw-node-buffer, metadata-targets.raw, -# and state-storage). Update the suffix per site if you run multiple pipelines. +description: "OPC-UA Extractor pipeline for site {{location}} — writes node metadata to RAW for transformation into ISATimeSeries DM instances" rawTables: -- dbName: 'db_{{location}}_opcua' - tableName: assets -- dbName: 'db_{{location}}_opcua' - tableName: timeseries -- dbName: 'db_{{location}}_opcua' - tableName: relationships -- dbName: 'db_{{location}}_opcua' - tableName: known_objects -- dbName: 'db_{{location}}_opcua' - tableName: known_references -- dbName: 'db_{{location}}_opcua' - tableName: known_variables -- dbName: 'db_{{location}}_opcua' - tableName: state-store-variables + - dbName: "db_{{location}}_opcua" + tableName: "nodes" schedule: Continuous contacts: -- name: {{integration_owner_name}} - email: {{integration_owner_email}} - role: Owner - sendNotification: true -- name: Cognite Support - email: support@cognite.com - role: Operational Owner - sendNotification: true -- name: {{data_owner_name}} - email: {{data_owner_email}} - role: Data Owner - sendNotification: true + - name: {{integration_owner_name}} + email: {{integration_owner_email}} + role: Owner + sendNotification: true + - name: Cognite Support + email: support@cognite.com + role: Operational Owner + sendNotification: true + - name: {{data_owner_name}} + email: {{data_owner_email}} + role: Data Owner + sendNotification: true notificationConfig: # OPC-UA extractor streams continuously; alert if not seen for >30 minutes allowedNotSeenRangeInMinutes: 30 @@ -43,15 +27,17 @@ createdBy: cognite-toolkit documentation: | ## OPC-UA extraction pipeline - This extraction pipeline reads data from an OPC-UA server and writes Assets, - Timeseries, Events, and Relationships to CDF. The runtime configuration lives - in `ep_opcua.ExtractionPipeline.Config.yaml` and is fetched by the extractor - using its `pipeline-id`. + This extraction pipeline reads data from an OPC-UA server. The OPC-UA Extractor + writes timeseries values directly to CDF and node metadata (name, description, + data type) to RAW table `db_{{location}}_opcua.nodes`. The transformation + `tr_{{location}}_opcua_timeseries` maps that metadata to **ISATimeSeries** view + instances in `{{instanceSpace}}`. - ### Endpoints (example — replace with your server addresses) + The runtime configuration lives in `ep_opcua.ExtractionPipeline.Config.yaml` and + is fetched by the extractor using its `pipeline-id`. - * Primary : `opc.tcp://opcua-server-primary.example.com:4840` - * Secondary: `opc.tcp://opcua-server-secondary.example.com:4840` + **Configure node filters before production use.** Without filters the extractor + browses the full OPC-UA server tree, which may be very large and slow. ### Required environment variables on the extractor host @@ -62,19 +48,15 @@ documentation: | | `IDP_TENANT_ID` | IdP tenant ID | | `IDP_CLIENT_ID` | Service account client ID | | `IDP_CLIENT_SECRET` | Service account client secret | + | `OPCUA_ENDPOINT_URL` | OPC-UA server URL (e.g. opc.tcp://host:4840) | | `OPCUA_USER` | OPC-UA server username (omit if anonymous) | | `OPCUA_PASSWORD` | OPC-UA server password | - | `PROMETHEUS_USER` | (optional) Push-gateway username | - | `PROMETHEUS_PASSWORD` | (optional) Push-gateway password | ### Install the OPC-UA extractor 1. **Download the installer** from Cognite Hub or Fusion (Extractors page). - 2. **Install on the extractor host**, e.g. `C:\Cognite\OPCUA\` on Windows or - `/opt/cognite/opcua/` on Linux. Follow the README that ships with the - installer to create a service. - 3. **Point the extractor at this pipeline** by giving it a minimal local - `config.yml` containing only credentials and the pipeline ID: + 2. **Install on the extractor host** and register as a service. + 3. **Point the extractor at this pipeline** with a minimal local `config.yml`: ```yaml version: 1 @@ -92,42 +74,6 @@ documentation: | pipeline-id: ep_{{location}}_opcua ``` - The full runtime configuration (source, extraction filters, history, - subscriptions, throttling, RAW targets, metrics, …) is delivered from this - extraction pipeline's remote config. - - 4. **Configure certificate storage** by editing - `config/opc.ua.net.extractor.Config.xml` so certificates are stored in a - known directory rather than the OS user store: - - ```xml - - Directory - ./certificates/pki/app - CN=Opcua-extractor, C=NO, S=Oslo, O=Cognite, DC=localhost - - ``` - - ### RAW tables written by this pipeline - - | Table | Purpose | - | ------------------------ | ---------------------------------------------------------- | - | `assets` | Asset rows staged from OPC-UA Object nodes | - | `timeseries` | Timeseries rows staged from OPC-UA Variable nodes | - | `relationships` | Relationship rows derived from OPC-UA references | - | `known_objects` | Browse cache of seen Object nodes | - | `known_references` | Browse cache of seen References | - | `known_variables` | Browse cache of seen Variable nodes | - | `state-store-variables` | Extractor state for variable subscriptions / history | - | `state-store-events` | Extractor state for event subscriptions / history | - - ### Browse / rebrowse behaviour - - * **Time-based rebrowse:** daily (configured via `auto-rebrowse-period` - in the runtime config). - * **Event-based rebrowse:** triggered by changes to *NamespacePublicationDate* - (where supported by the server). - ### References * OPC-UA extractor docs: diff --git a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql new file mode 100644 index 00000000..c8eed049 --- /dev/null +++ b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql @@ -0,0 +1,50 @@ +-- Transformation: OPC-UA node metadata → ISATimeSeries DM instances +-- Target view : ISATimeSeries (space: {{schemaSpace}}, version: {{dataModelVersion}}) +-- Source RAW : db_{{location}}_opcua.nodes +-- +-- SCAFFOLD — column names reflect the default OPC-UA Extractor RAW schema when +-- store-raw-metadata: true is set. OPC-UA node structure is highly site-specific; +-- verify column names against your actual RAW table before running in production. +-- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. +-- +-- Default OPC-UA Extractor RAW columns (verify for your extractor version): +-- Id — OPC-UA node ID string (e.g. "ns=2;s=Temperature.Tag1") +-- DisplayName — Human-readable node name +-- Description — Node description (may be empty) +-- DataType — OPC-UA data type (e.g. "Double", "Float", "Int32") +-- NodeClass — "Variable" for measurement nodes + +SELECT + -- Identity: use the extractor-assigned externalId (id-prefix + node id) + concat('{{opcuaIdPrefix}}', Id) AS externalId, + '{{instanceSpace}}' AS space, + + -- Core metadata + DisplayName AS name, + Description AS description, + + -- Map OPC-UA DataType to CDF timeseries type + case + when lower(DataType) in ('boolean') then 'string' + when lower(DataType) in ('string', 'localizedtext') then 'string' + else 'numeric' + end AS type, + false AS isStep, + + -- Source context label + 'OPC-UA' AS sourceContext, + + -- sysTagsFound: array of candidate tag identifiers for downstream SQL contextualization. + -- The pattern below extracts the last segment of the OPC-UA display name, which often + -- corresponds to a functional location or equipment tag. Adapt to your site's node naming. + -- Set populateSysTagsFound: false in default.config.yaml to omit this field entirely. + case + when '{{populateSysTagsFound}}' = 'true' + then array( + regexp_extract(DisplayName, '[^._\\-]+$', 0) -- last segment after '.', '_', or '-' + ) + else array() + end AS sysTagsFound + +FROM `db_{{location}}_opcua`.`nodes` +WHERE NodeClass = 'Variable' -- only ingest measurement nodes, not object/folder nodes diff --git a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml new file mode 100644 index 00000000..7efac67b --- /dev/null +++ b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml @@ -0,0 +1,14 @@ +externalId: "tr_{{location}}_opcua_timeseries" +name: "tr:{{location}}:opcua:timeseries" +dataSetExternalId: "{{dataset}}" +destination: + type: instances + dataModel: + space: "{{schemaSpace}}" + externalId: ISATimeSeries + version: "{{dataModelVersion}}" + destinationType: ISATimeSeries + instanceSpace: "{{instanceSpace}}" +ignoreNullFields: true +isPublic: true +conflictMode: upsert diff --git a/modules/sourcesystem/cdf_pi_foundation/README.md b/modules/sourcesystem/cdf_pi_foundation/README.md index 0c9fff0b..67f27d59 100644 --- a/modules/sourcesystem/cdf_pi_foundation/README.md +++ b/modules/sourcesystem/cdf_pi_foundation/README.md @@ -1,14 +1,21 @@ # PI Foundation Module -This module ingests PI tags and tag values from an OSIsoft/AVEVA PI Data Archive directly into the Core Data Model `ExtractorTimeSeries` view in `{{instanceSpace}}`, via the Cognite **PI .NET Extractor** (Windows-only). The extractor's `time-series.space-id` setting (in `ep_pi.ExtractionPipeline.Config.yaml`) enables the CDM destination — there is **no RAW staging** and no separate transformation step. Tag metadata (`name`, `description`, `unit`) lands as fields on the `ExtractorTimeSeries` instances. +This module ingests PI tag metadata from an OSIsoft/AVEVA PI Data Archive into CDF RAW, then transforms it into `ISATimeSeries` data model instances in the ISA Manufacturing Extension. PI timeseries values (measurements) are written directly to CDF by the PI .NET Extractor — RAW is used only for tag metadata (name, description, unit, engineering range). + +The extractor configuration template is sourced from `gss-knowledge-base` and includes all required parameters with documentation. ## Module Architecture ``` cdf_pi_foundation/ ├── extraction_pipelines/ -│ ├── ep_pi.ExtractionPipeline.yaml # Pipeline definition (contacts, schedule, source) -│ └── ep_pi.ExtractionPipeline.Config.yaml # Full PI .NET Extractor config template (CDM destination) +│ ├── ep_pi.ExtractionPipeline.yaml # Pipeline definition with RAW table reference +│ └── ep_pi.ExtractionPipeline.Config.yaml # Full PI .NET Extractor config template +├── raw/ +│ └── db_pi.Database.yaml # db_{{location}}_pi +├── transformations/ +│ ├── tr_pi_timeseries.Transformation.yaml # Targets ISATimeSeries view +│ └── tr_pi_timeseries.Transformation.sql # Scaffold SQL — adapt before production use ├── default.config.yaml └── module.toml ``` @@ -18,11 +25,18 @@ cdf_pi_foundation/ ``` PI Data Archive │ - ▼ (PI SDK / PI Web API) -PI .NET Extractor (time-series.space-id: {{instanceSpace}}) + ▼ +PI .NET Extractor + │ + ├── Timeseries values ──────────────────► CDF Timeseries (direct write) │ - └── Tags + values ──────────► CDM ExtractorTimeSeries instances in {{instanceSpace}} - (externalId = "{{piIdPrefix}}") + └── Tag metadata (name, unit, desc) ───► RAW: db_{{location}}_pi.timeseries_metadata + │ + ▼ + Transformation: tr_{{location}}_pi_timeseries + │ + ▼ + ISATimeSeries DM instances in {{instanceSpace}} ``` ## Resources Created @@ -30,24 +44,25 @@ PI .NET Extractor (time-series.space-id: {{instanceSpace}}) | Resource | External ID | Purpose | |---|---|---| | ExtractionPipeline | `ep_{{location}}_pi` | Pipeline health tracking and config delivery | +| RAW Database | `db_{{location}}_pi` | PI tag metadata landing zone | +| Transformation | `tr_{{location}}_pi_timeseries` | RAW metadata → ISATimeSeries DM instances | ## Configuration -All variables are declared locally in `default.config.yaml` (no inheritance): - ```yaml variables: modules: cdf_pi_foundation: - location: "site1" # Site code, used in externalIds (ep__pi) - instanceSpace: "sp_instances" # DM space where ExtractorTimeSeries instances are written - dataset: "ds_pi" # dataSetExternalId for the pipeline - piIdPrefix: "pi:" # External ID prefix for all PI tag timeseries - - integration_owner_name: "Integration Owner" # Technical contact for the pipeline + location: "site1" + instanceSpace: "sp_isa_instance_space" + schemaSpace: "sp_isa_manufacturing" + dataModelVersion: "v1" + dataset: "ds_pi" + piIdPrefix: "pi:" + populateSysTagsFound: true + integration_owner_name: "Integration Owner" integration_owner_email: "integration.owner@example.com" - - data_owner_name: "Data Owner" # Business contact for the data + data_owner_name: "Data Owner" data_owner_email: "data.owner@example.com" ``` @@ -62,38 +77,27 @@ Set these on the host running the PI .NET Extractor: | `PI_PASSWORD` | PI server password | | `CDF_PROJECT` | CDF project name | | `CDF_URL` | CDF base URL (e.g. `https://api.cognitedata.com`) | -| `IDP_TENANT_ID` | IDP tenant ID | +| `IDP_TENANT_ID` | IdP tenant ID | | `IDP_CLIENT_ID` | Service account client ID | | `IDP_CLIENT_SECRET` | Service account client secret | ## Verify Before Deploy -Confirm the following before running the extractor in production: - -1. **DM space exists** — `{{instanceSpace}}` must already be deployed (the - extractor will not create it). Deploy whichever `models/` module owns the - space first. -2. **`ExtractorTimeSeries` view available** — this is part of the Cognite Core - Data Model (CDM v1) `ExtractorTimeSeries` extension. Confirm CDM is enabled - in your project. -3. **`piIdPrefix` is unique** — if you run multiple PI extractors against the - same CDF project, give each one a different prefix so external IDs don't - collide. -4. **PI Point selection** — the extractor browses the PI Data Archive and - subscribes to all PI Points by default. Add tag filters in - `ep_pi.ExtractionPipeline.Config.yaml` if you need to restrict the scope - (large PI servers can have hundreds of thousands of tags). +1. **`{{instanceSpace}}` and ISA data model** — deploy `models/isa_manufacturing_extension` first. +2. **`piIdPrefix` is unique** — use different prefixes if multiple PI extractors share one project. +3. **PI Point selection** — add tag filters in `ep_pi.ExtractionPipeline.Config.yaml` on large PI servers. + +## Transformation SQL — Important Note + +`tr_pi_timeseries.Transformation.sql` is a **generalized scaffold**. Preview against your actual RAW data and adapt column names and `sysTagsFound` regex to your site's PI tag naming convention. See `.cursor/rules/cdf-transformations.mdc` for AI-assisted adaptation guidance. ## Getting Started ### Prerequisites -- DM space `{{instanceSpace}}` deployed and writable (Core Data Model with the - `ExtractorTimeSeries` extension) -- PI .NET Extractor installed on a Windows host with network access to the PI - Data Archive and to CDF -- CDF service account with write access to the `{{dataset}}` data set and write - access to `{{instanceSpace}}` for `ExtractorTimeSeries` instances +- `models/isa_manufacturing_extension` deployed +- PI .NET Extractor installed on Windows with network access to the PI Data Archive and CDF +- Extractor service account with read/write to `db_{{location}}_pi` and the `{{dataset}}` data set ### Deploy @@ -103,12 +107,20 @@ cdf deploy modules/sourcesystem/cdf_pi_foundation --env your-environment ### Configure and run the extractor -The extractor config is delivered via the `ep_{{location}}_pi` extraction pipeline in CDF. Set the environment variables on the extractor host and start the extractor — it will pull its config from CDF automatically. +Set environment variables on the extractor host and start the extractor — it pulls config from `ep_{{location}}_pi` automatically. + +### Run the transformation + +```bash +cdf transformations run tr_{{location}}_pi_timeseries --env your-environment +``` ### Verify -The PI extractor writes timeseries directly to the **Core Data Model `ExtractorTimeSeries`** view in `{{instanceSpace}}` (driven by `time-series.space-id` in `ep_pi.ExtractionPipeline.Config.yaml`). Open the `ExtractorTimeSeries` view in Fusion → Data Models, filter on space `{{instanceSpace}}`, and confirm instances exist with `externalId` prefixed by `{{piIdPrefix}}` (default `pi:`) and metadata fields (`name`, `description`, `unit`) populated from the PI tags. +Check that `ISATimeSeries` instances appear in `{{instanceSpace}}` in CDF Data Explorer. ## Dependencies -**Depends on**: A deployed DM space (`{{instanceSpace}}`) with the Core Data Model `ExtractorTimeSeries` view available +**Depends on**: `models/isa_manufacturing_extension` + +**Used by**: `foundation/cdf_ingestion_foundation` (references `tr_{{location}}_pi_timeseries` in the ingestion workflow) diff --git a/modules/sourcesystem/cdf_pi_foundation/default.config.yaml b/modules/sourcesystem/cdf_pi_foundation/default.config.yaml index beeb9032..1362d3be 100644 --- a/modules/sourcesystem/cdf_pi_foundation/default.config.yaml +++ b/modules/sourcesystem/cdf_pi_foundation/default.config.yaml @@ -3,15 +3,24 @@ # Site/location code, used in externalIds (e.g. ep_{{location}}_pi) location: "site1" -# DM space where the extractor writes ExtractorTimeSeries instances (CDM destination) +# DM space where ISATimeSeries instances are written instanceSpace: "sp_isa_instance_space" +# Schema space for ISA Manufacturing Extension views (used by transformations) +schemaSpace: "sp_isa_manufacturing" + +# Data model view version +dataModelVersion: "v1" + # dataSetExternalId for the extraction pipeline dataset: "ds_pi" -# External ID prefix for PI tag timeseries instances (used by the extractor) +# External ID prefix for PI tag timeseries instances piIdPrefix: "pi:" +# Set to false to omit sysTagsFound population (used by downstream SQL contextualization) +populateSysTagsFound: true + # Integration owner (technical contact for the pipeline) integration_owner_name: "Integration Owner" integration_owner_email: "integration.owner@example.com" diff --git a/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.Config.yaml b/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.Config.yaml index 1201405d..1dc3182d 100644 --- a/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.Config.yaml +++ b/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.Config.yaml @@ -1,39 +1,47 @@ externalId: "ep_{{location}}_pi" config: - # Template for the PI Extractor configuration file. - # Fields that are commented out are optional. - # The extractor requires the configuration file to be in the config/config.yml file wrt the installation/working directory. - # In general, all secrets should be kept out of the configuration file, using references to environment variables. - # Also, don't enable default values in the configuration file, as this provides a safer upgrade path. + # PI .NET Extractor configuration template + # Source: gss-knowledge-base/extractors/toolkit_examples/pi_net_extractor + # + # Secrets belong in environment variables on the extractor host — not in this file. + # The extractor pulls this config remotely via extraction-pipeline.external-id. - # Version of this configuration schema version: 1 - # Log levels: 'verbose', 'debug', 'information', 'warning', 'error', 'fatal'. logger: - # Writes log events at this level to a file. Logs will roll over to new files daily. - # If not present, or if the level is invalid, logging to file is disabled. file: level: "information" - # Path for logging output. If not present, logging to file is disabled. path: "logs/log.log" + console: + level: "warning" - # Configuration related to time series in CDF time-series: - # External Id prefix to identify time series in CDF. Leave empty for no prefix. - # The external Id in CDF is this optional prefix followed by the PI Point name or id - external-id-prefix: "pi:" + # External ID prefix — all PI tags will be created as "pi:" in CDF + external-id-prefix: "{{piIdPrefix}}" + # Write timeseries metadata to RAW for transformation into ISATimeSeries DM instances + raw: + database: "db_{{location}}_pi" + table: "timeseries_metadata" + data-set: + external-id: "{{dataset}}" - # Data modeling space id, this parameter will override data-set-id and switch the extractor destination - # from Asset-Centric model TimeSeries to Core Data Model TimeSeries with the ExtractorTimeSeries extension. - space-id: "{{instanceSpace}}" - - # Configuration related to the PI Server pi: - # PI Data Archive host server to connect to host: ${PI_HOST} - # Username to use for authentication username: ${PI_USER} - # Password - password: ${PI_PASSWORD} \ No newline at end of file + password: ${PI_PASSWORD} + + # Optional: filter which PI tags are extracted + # Uncomment and configure for your site: + # tag-filter: + # whitelist: + # - "SITE.*" + # - "TAG_PREFIX.*" + # blacklist: + # - "*.BAD" + # - "*.SHUTDOWN" + + # Optional: extraction schedule + # history: + # start-time: "2020-01-01T00:00:00Z" + # max-parallelism: 10 diff --git a/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.yaml b/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.yaml index 650a4377..bc1154c3 100644 --- a/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.yaml +++ b/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.yaml @@ -1,7 +1,10 @@ externalId: "ep_{{location}}_pi" name: "ep:{{location}}:pi" dataSetExternalId: "{{dataset}}" -description: "PI .NET Extractor pipeline for site {{location}} — writes PI tags and values directly to the Core Data Model `ExtractorTimeSeries` view in {{instanceSpace}} (no RAW staging)" +description: "PI .NET Extractor pipeline for site {{location}} — writes tag metadata to RAW for transformation into ISATimeSeries DM instances" +rawTables: + - dbName: "db_{{location}}_pi" + tableName: "timeseries_metadata" source: PI schedule: Continuous contacts: @@ -25,12 +28,12 @@ documentation: | ## PI extraction pipeline This extraction pipeline reads tags and tag values from a Cognite PI .NET - Extractor (version 2.1, config schema version 3) and writes them directly to - the **Core Data Model `ExtractorTimeSeries`** view in `{{instanceSpace}}` — - there is **no RAW staging step**. The CDM destination is enabled by setting - `time-series.space-id` in `ep_pi.ExtractionPipeline.Config.yaml`. Timeseries - external IDs are prefixed with `{{piIdPrefix}}` (default `pi:`) followed by - the PI Point name or id. + Extractor and writes timeseries values directly to CDF. Tag metadata (name, + description, unit, engineering range) lands in RAW table + `db_{{location}}_pi.timeseries_metadata`. The transformation + `tr_{{location}}_pi_timeseries` maps that metadata to **ISATimeSeries** view + instances in `{{instanceSpace}}`. Timeseries external IDs are prefixed with + `{{piIdPrefix}}` (default `pi:`) followed by the PI Point name or id. The runtime configuration lives in `ep_pi.ExtractionPipeline.Config.yaml` and is fetched by the extractor using its `pipeline-id`. diff --git a/modules/sourcesystem/cdf_pi_foundation/raw/db_pi.Database.yaml b/modules/sourcesystem/cdf_pi_foundation/raw/db_pi.Database.yaml new file mode 100644 index 00000000..d78d0126 --- /dev/null +++ b/modules/sourcesystem/cdf_pi_foundation/raw/db_pi.Database.yaml @@ -0,0 +1 @@ +dbName: "db_{{location}}_pi" diff --git a/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.sql b/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.sql new file mode 100644 index 00000000..11312507 --- /dev/null +++ b/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.sql @@ -0,0 +1,48 @@ +-- Transformation: PI tag metadata → ISATimeSeries DM instances +-- Target view : ISATimeSeries (space: {{schemaSpace}}, version: {{dataModelVersion}}) +-- Source RAW : db_{{location}}_pi.timeseries_metadata +-- +-- SCAFFOLD — column names (name, description, unit, etc.) reflect the default PI .NET Extractor +-- RAW schema. Verify against your actual RAW table before running in production. +-- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. + +SELECT + -- Identity + concat('{{piIdPrefix}}', name) AS externalId, + '{{instanceSpace}}' AS space, + + -- Core metadata + name AS name, + description AS description, + 'numeric' AS type, + false AS isStep, + + -- Unit — try to resolve to CDF unit catalogue node; fall back to raw string + if( + try_get_unit(unit) IS NOT NULL, + node_reference('cdf_cdm_units', try_get_unit(unit)), + NULL + ) AS unit, + unit AS sourceUnit, + + -- Source context label + 'PI' AS sourceContext, + + -- sysTagsFound: array of candidate tag identifiers for downstream SQL contextualization. + -- The pattern below extracts the segment before the first ':' or '_' delimiter, + -- which often corresponds to a functional location or equipment tag in PI naming conventions. + -- Adapt the regexp to match your site's PI tag naming convention. + -- Set populateSysTagsFound: false in default.config.yaml to omit this field entirely. + case + when '{{populateSysTagsFound}}' = 'true' + then array( + regexp_extract( + regexp_replace(name, '^[A-Z]+_', ''), -- strip common prefixes (VAL_, AL_, etc.) + '^[^:_.]+', -- take first segment before ':', '_', or '.' + 0 + ) + ) + else array() + end AS sysTagsFound + +FROM `db_{{location}}_pi`.`timeseries_metadata` diff --git a/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.yaml b/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.yaml new file mode 100644 index 00000000..df91b5c9 --- /dev/null +++ b/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.yaml @@ -0,0 +1,14 @@ +externalId: "tr_{{location}}_pi_timeseries" +name: "tr:{{location}}:pi:timeseries" +dataSetExternalId: "{{dataset}}" +destination: + type: instances + dataModel: + space: "{{schemaSpace}}" + externalId: ISATimeSeries + version: "{{dataModelVersion}}" + destinationType: ISATimeSeries + instanceSpace: "{{instanceSpace}}" +ignoreNullFields: true +isPublic: true +conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/README.md b/modules/sourcesystem/cdf_sap_foundation/README.md index 28f32dde..d9a2809b 100644 --- a/modules/sourcesystem/cdf_sap_foundation/README.md +++ b/modules/sourcesystem/cdf_sap_foundation/README.md @@ -1,6 +1,10 @@ # SAP Foundation Module -This module ingests SAP functional locations, equipment, maintenance orders, and operations into CDF RAW via a **single SAP OData extraction pipeline** with multiple entity queries. Downstream transformations from RAW into the ISA Manufacturing Extension data model are not shipped with this module — author them as needed (one per entity type, run in dependency order to preserve referential integrity). +This module ingests SAP functional locations, equipment, maintenance orders, and operations into CDF RAW via a **single SAP OData extraction pipeline** with multiple entity queries, then transforms each entity type into the ISA Manufacturing Extension data model. Transformations are split by entity type and must be run in the correct order to ensure referential integrity. + +The extractor configuration template is sourced from `gss-knowledge-base` and covers all standard PM/AM entity types from SAP S/4HANA. + +> **SAP OData service names and entity keys vary across SAP versions and NW Gateway configurations.** Verify all service names and field names in the extractor config and transformation SQL against your SAP landscape before deploying. ## Module Architecture @@ -10,14 +14,14 @@ cdf_sap_foundation/ │ ├── ep_sap.ExtractionPipeline.yaml # Single pipeline, all entity types │ └── ep_sap.ExtractionPipeline.Config.yaml # Full SAP OData extractor config template ├── raw/ -│ ├── db_sap.Database.yaml # db_{{location}}_sap -│ ├── functional_location.Table.yaml # SAP FunclocListSet (master, weekly) -│ ├── equipment.Table.yaml # SAP EquipmentListSet (master, weekly) -│ ├── workorder.Table.yaml # SAP ExHeaderSet (orders, daily) -│ ├── workpackage.Table.yaml # SAP ExOlistSet (order list, daily) -│ ├── worktask.Table.yaml # SAP ExOperationsSet (operations, daily) -│ ├── workitem.Table.yaml # SAP ExNotifheader (notifications, daily) -│ └── state_store.Table.yaml # Extractor state (managed by extractor) +│ └── db_sap.Database.yaml # db_{{location}}_sap +├── transformations/ +│ ├── tr_sap_assets.Transformation.yaml/.sql # Functional locations → ISAAsset +│ ├── tr_sap_equipment.Transformation.yaml/.sql # Equipment → Equipment +│ ├── tr_sap_equipment_to_asset.Transformation.yaml/.sql # Equipment.asset relation +│ ├── tr_sap_maintenance_orders.Transformation.yaml/.sql # Work orders → WorkOrder +│ ├── tr_sap_operations.Transformation.yaml/.sql # Work tasks → Operation +│ └── tr_sap_operation_to_order.Transformation.yaml/.sql # Operation.workOrder relation ├── default.config.yaml └── module.toml ``` @@ -30,42 +34,67 @@ SAP NW Gateway ▼ SAP OData Extractor (single pipeline, 6 entity queries) │ - ├── FunclocListSet ──► RAW: functional_location ──► ISAAsset (downstream — not shipped) - ├── EquipmentListSet ──► RAW: equipment ──► Equipment + Equipment.asset relation (downstream) - ├── ExHeaderSet ──► RAW: workorder ──► WorkOrder (downstream) - ├── ExOlistSet ──► RAW: workpackage ──► (target TBD — order line items) - ├── ExOperationsSet ──► RAW: worktask ──► Operation + Operation.workOrder relation (downstream) - └── ExNotifheader ──► RAW: workitem ──► (target TBD — notifications) - - State checkpoints ───► RAW: state_store (delta tracking, extractor-managed) + ├── FunclocListSet ──► RAW: functional_location + ├── EquipmentListSet ──► RAW: equipment + ├── ExHeaderSet ──► RAW: workorder + ├── ExOlistSet ──► RAW: workpackage + ├── ExOperationsSet ──► RAW: worktask + └── ExNotifheader ──► RAW: workitem + │ + ┌─────────┴──────────┐ + ▼ (6 transformations, run in order) + ISA Manufacturing Extension DM + ├── ISAAsset instances + ├── Equipment instances + ├── Equipment.asset relation + ├── WorkOrder instances + ├── Operation instances + └── Operation.workOrder relation ``` +## Transformation Run Order + +| Order | Transformation | Depends on | +|---|---|---| +| 1 | `tr_sap_assets` | — | +| 2 | `tr_sap_equipment` | `tr_sap_assets` | +| 3 | `tr_sap_equipment_to_asset` | `tr_sap_assets`, `tr_sap_equipment` | +| 4 | `tr_sap_maintenance_orders` | `tr_sap_assets` | +| 5 | `tr_sap_operations` | `tr_sap_maintenance_orders` | +| 6 | `tr_sap_operation_to_order` | `tr_sap_maintenance_orders`, `tr_sap_operations` | + ## Resources Created | Resource | External ID | Purpose | |---|---|---| -| ExtractionPipeline | `ep_{{location}}_sap` | Pipeline health tracking and config delivery | -| RAW Database | `db_{{location}}_sap` | SAP entity landing zone | -| RAW Tables | `functional_location`, `equipment`, `workorder`, `workpackage`, `worktask`, `workitem`, `state_store` | One per OData query plus an extractor-managed state-store table | +| ExtractionPipeline | `ep_{{location}}_sap` | Single pipeline with all SAP entity queries | +| RAW Database | `db_{{location}}_sap` | SAP data landing zone | +| Transformation | `tr_{{location}}_sap_assets` | Functional locations → ISAAsset | +| Transformation | `tr_{{location}}_sap_equipment` | Equipment master → Equipment | +| Transformation | `tr_{{location}}_sap_equipment_to_asset` | Equipment.asset relation | +| Transformation | `tr_{{location}}_sap_maintenance_orders` | Work orders → WorkOrder | +| Transformation | `tr_{{location}}_sap_operations` | Work tasks → Operation | +| Transformation | `tr_{{location}}_sap_operation_to_order` | Operation.workOrder relation | ## Configuration -All variables are declared locally in `default.config.yaml` (no inheritance): - ```yaml variables: modules: cdf_sap_foundation: - location: "site1" # Site code, used in externalIds (ep__sap, db__sap) - instanceSpace: "sp_instances" # DM space for ISA Manufacturing Extension instances - dataset: "ds_sap" # dataSetExternalId for the pipeline and RAW database - sapPlant: "1000" # SAP plant code, used in OData filter expressions (MaintPlant eq '') - sapDisableSsl: false # Set true only if SAP server uses an untrusted self-signed certificate - - integration_owner_name: "Integration Owner" # Technical contact for the pipeline + location: "site1" + instanceSpace: "sp_isa_instance_space" + schemaSpace: "sp_isa_manufacturing" + dataModelVersion: "v1" + dataset: "ds_sap" + sapSystem: s4hana + sapPlant: "1000" + sapPlants: [] + sapDisableSsl: false + populateSysTagsFound: true + integration_owner_name: "Integration Owner" integration_owner_email: "integration.owner@example.com" - - data_owner_name: "Data Owner" # Business contact for the data + data_owner_name: "Data Owner" data_owner_email: "data.owner@example.com" ``` @@ -81,40 +110,26 @@ Set these on the host running the SAP OData Extractor: | `SAP_USERNAME` | SAP service account username | | `SAP_PASSWORD` | SAP service account password | | `CDF_PROJECT` | CDF project name | -| `CDF_URL` | CDF base URL (e.g. `https://api.cognitedata.com`) | +| `CDF_URL` | CDF base URL | | `IDP_TENANT_ID` | IdP tenant ID | | `IDP_CLIENT_ID` | Service account client ID | | `IDP_CLIENT_SECRET` | Service account client secret | ## Verify Before Deploy -SAP OData service names (`sap_service`), entity keys (`sap_key`), and **filter -property casing** vary across SAP versions and customer NW Gateway -configurations. The current `ep_sap.ExtractionPipeline.Config.yaml` ships with -plausible defaults but **must be verified against your SAP landscape**: - -- `sap_service` values (`ZGW_FUNCLOC_SRV`, `ZGW_GETEQIP_SRV`, - `ZPM_ORDER_DATA_EXPORT_SRV`, `ZPM_NOTI_EXTRACT_DATA_SRV`) are customer-specific - Z-services. -- `sap_key` field names (e.g. `Functlocation`, `Equipment`, `OrderId`, - `Activity`, `NotifNo`) follow each gateway's naming. -- **Filter property casing is inconsistent in the shipped template** — - `MaintPlant` (Funcloc), `Maintplant` (Equipment), `Mainplant` (Notifications). - The notifications filter in particular (`Mainplant`) is suspected to be a typo - for `Maintplant` or `MaintPlant`. Confirm the exact spelling against your - service `$metadata` document before deploying. - -See `.cursor/rules/cdf-transformations.mdc` for AI-assisted guidance when -authoring the downstream transformations into ISA Manufacturing Extension. +SAP OData service names (`sap_service`), entity keys (`sap_key`), and **filter property casing** vary across landscapes. The shipped template uses `MaintPlant`, `Maintplant`, and `Mainplant` in different filters — confirm exact spelling against your service `$metadata` before deploying. + +## Transformation SQL — Important Note + +All six SQL files are **generalized scaffolds**. Preview each transformation against your actual RAW data and verify column names match your extractor output. See `.cursor/rules/cdf-transformations.mdc` for AI-assisted adaptation guidance. ## Getting Started ### Prerequisites -- `models/isa_manufacturing_extension` deployed (downstream target) +- `models/isa_manufacturing_extension` deployed - SAP OData Extractor installed with network access to SAP NW Gateway -- Extractor service account with read/write to the `db_{{location}}_sap` RAW - database and read access to the `{{dataset}}` data set +- Extractor service account with read/write to `db_{{location}}_sap` and the `{{dataset}}` data set - SAP service account with READ access to PM/AM entities ### Deploy @@ -125,8 +140,23 @@ cdf deploy modules/sourcesystem/cdf_sap_foundation --env your-environment ### Configure and run the extractor -The extractor config is delivered via the `ep_{{location}}_sap` extraction pipeline in CDF. Set the environment variables on the extractor host and start the extractor — it will pull its config from CDF automatically. +Set environment variables on the extractor host and start the extractor — it pulls config from `ep_{{location}}_sap` automatically. + +### Run transformations in order + +```bash +cdf transformations run tr_{{location}}_sap_assets --env your-environment +cdf transformations run tr_{{location}}_sap_equipment --env your-environment +cdf transformations run tr_{{location}}_sap_equipment_to_asset --env your-environment +cdf transformations run tr_{{location}}_sap_maintenance_orders --env your-environment +cdf transformations run tr_{{location}}_sap_operations --env your-environment +cdf transformations run tr_{{location}}_sap_operation_to_order --env your-environment +``` + +In production, the ingestion workflow (`cdf_ingestion_foundation`) handles ordering automatically. + +## Dependencies -### Verify +**Depends on**: `models/isa_manufacturing_extension` -Check that all seven RAW tables under `db_{{location}}_sap` are populated in CDF Data Explorer (the master tables — `functional_location`, `equipment` — populate weekly; the order/notification tables populate daily). \ No newline at end of file +**Used by**: `foundation/cdf_ingestion_foundation` (references all 6 transformations with `dependsOn` ordering in the ingestion workflow) diff --git a/modules/sourcesystem/cdf_sap_foundation/default.config.yaml b/modules/sourcesystem/cdf_sap_foundation/default.config.yaml index ea47edfb..e29049fb 100644 --- a/modules/sourcesystem/cdf_sap_foundation/default.config.yaml +++ b/modules/sourcesystem/cdf_sap_foundation/default.config.yaml @@ -6,17 +6,33 @@ location: "site1" # DM space where ISA Manufacturing Extension instances are written instanceSpace: "sp_isa_instance_space" +# Schema space for ISA Manufacturing Extension views (used by transformations) +schemaSpace: "sp_isa_manufacturing" + +# Data model view version +dataModelVersion: "v1" + # dataSetExternalId for the extraction pipeline and RAW database dataset: "ds_sap" -# SAP plant code — used in OData filter expressions (e.g. MaintPlant eq '{{sapPlant}}') +# SAP system label — used in external IDs and source naming +sapSystem: s4hana + +# Single-plant deployment (default) sapPlant: "1000" +# Multi-plant override — set a list to expand extraction per plant, e.g. ["1000","2000","3000"] +# When non-empty this takes precedence over sapPlant +sapPlants: [] + # Disable SSL verification for the SAP gateway connection. # Set to true ONLY if the SAP server uses a self-signed certificate that is # not trusted by the extractor host. sapDisableSsl: false +# Set to false to omit sysTagsFound population on MaintenanceOrder instances +populateSysTagsFound: true + # Integration owner (technical contact for the pipeline) integration_owner_name: "Integration Owner" integration_owner_email: "integration.owner@example.com" diff --git a/modules/sourcesystem/cdf_sap_foundation/extraction_pipelines/ep_sap.ExtractionPipeline.Config.yaml b/modules/sourcesystem/cdf_sap_foundation/extraction_pipelines/ep_sap.ExtractionPipeline.Config.yaml index 31173556..c4c0616b 100644 --- a/modules/sourcesystem/cdf_sap_foundation/extraction_pipelines/ep_sap.ExtractionPipeline.Config.yaml +++ b/modules/sourcesystem/cdf_sap_foundation/extraction_pipelines/ep_sap.ExtractionPipeline.Config.yaml @@ -1,9 +1,16 @@ externalId: "ep_{{location}}_sap" config: - # Runtime config for the SAP OData Extractor — see ep_sap.ExtractionPipeline.yaml - # documentation block for required environment variables and install steps. - # Source template: gss-knowledge-base/extractors/toolkit_examples/sap_odata_extractor_remote + # SAP OData Extractor configuration template + # Source: gss-knowledge-base/extractors/toolkit_examples/sap_odata_extractor_remote + # + # Environment variables required on the extractor host (local config.yml): + # CDF_PROJECT, CDF_URL, IDP_TENANT_ID, IDP_CLIENT_ID, IDP_CLIENT_SECRET + # SAP_GATEWAY_URL, SAP_SOURCE_NAME, SAP_CLIENT, SAP_USERNAME, SAP_PASSWORD + # + # IMPORTANT: SAP OData service names (sap_service) and entity keys (sap_key) vary + # across SAP versions and NW Gateway configurations. Verify all service names and + # field names against your SAP landscape before deploying. version: 1 diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/db_sap.Database.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/db_sap.Database.yaml new file mode 100644 index 00000000..f7697f7f --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/raw/db_sap.Database.yaml @@ -0,0 +1 @@ +dbName: "db_{{location}}_sap" diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.sql new file mode 100644 index 00000000..525307dd --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.sql @@ -0,0 +1,40 @@ +-- Transformation: SAP Functional Locations → ISAAsset DM instances +-- Target view : ISAAsset (space: {{schemaSpace}}, version: {{dataModelVersion}}) +-- Source RAW : db_{{location}}_sap.functional_location +-- Run order : 1st — must complete before equipment and work order transformations +-- +-- SCAFFOLD — SAP column names (Functlocation, Descript, Fltyp, etc.) reflect the default +-- FunclocListSet OData entity schema. Column names vary across SAP versions and NW Gateway +-- configurations. Verify against your actual RAW table before running in production. +-- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. + +WITH parent_lookup AS ( + -- Resolve parent functional location for hierarchy building + -- SAP stores the superior functional location in a dedicated column + SELECT + concat('{{sapSystem}}:floc:', cast(child.Functlocation AS STRING)) AS externalId, + node_reference( + '{{instanceSpace}}', + concat('{{sapSystem}}:floc:', cast(parent.Functlocation AS STRING)) + ) AS parent + FROM `db_{{location}}_sap`.`functional_location` AS child + JOIN `db_{{location}}_sap`.`functional_location` AS parent + ON child.Supfloc = parent.Functlocation -- Supfloc: superior functional location field + WHERE isnotnull(child.Functlocation) + AND isnotnull(parent.Functlocation) +) +SELECT + concat('{{sapSystem}}:floc:', cast(f.Functlocation AS STRING)) AS externalId, + '{{instanceSpace}}' AS space, + + cast(f.Descript AS STRING) AS name, + cast(f.Functlocation AS STRING) AS sourceId, + cast(f.Fltyp AS STRING) AS type, -- functional location category + 'SAP Functional Location' AS sourceContext, + + parent_lookup.parent AS parent + +FROM `db_{{location}}_sap`.`functional_location` AS f +LEFT JOIN parent_lookup + ON concat('{{sapSystem}}:floc:', cast(f.Functlocation AS STRING)) = parent_lookup.externalId +WHERE isnotnull(f.Functlocation) diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.yaml new file mode 100644 index 00000000..2fad3b41 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.yaml @@ -0,0 +1,14 @@ +externalId: "tr_{{location}}_sap_assets" +name: "tr:{{location}}:sap:assets" +dataSetExternalId: "{{dataset}}" +destination: + type: instances + dataModel: + space: "{{schemaSpace}}" + externalId: ISAAsset + version: "{{dataModelVersion}}" + destinationType: ISAAsset + instanceSpace: "{{instanceSpace}}" +ignoreNullFields: true +isPublic: true +conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.sql new file mode 100644 index 00000000..5e2cb868 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.sql @@ -0,0 +1,22 @@ +-- Transformation: SAP Equipment → Equipment DM instances +-- Target view : Equipment (space: {{schemaSpace}}, version: {{dataModelVersion}}) +-- Source RAW : db_{{location}}_sap.equipment +-- Run order : 2nd — run after tr_sap_assets +-- +-- SCAFFOLD — SAP column names (Equipment, Descript, Eqtyp, Manfactur, etc.) reflect the +-- default EquipmentListSet OData entity schema. Verify against your actual RAW table. +-- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. + +SELECT + concat('{{sapSystem}}:equip:', cast(Equipment AS STRING)) AS externalId, + '{{instanceSpace}}' AS space, + + cast(Descript AS STRING) AS name, + cast(Equipment AS STRING) AS sourceId, + cast(Eqtyp AS STRING) AS type, -- equipment category + cast(Manfactur AS STRING) AS manufacturer, + cast(Maintplant AS STRING) AS sourceContext, + 'SAP Equipment' AS sourceContext + +FROM `db_{{location}}_sap`.`equipment` +WHERE isnotnull(Equipment) diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.yaml new file mode 100644 index 00000000..e0ec6267 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.yaml @@ -0,0 +1,14 @@ +externalId: "tr_{{location}}_sap_equipment" +name: "tr:{{location}}:sap:equipment" +dataSetExternalId: "{{dataset}}" +destination: + type: instances + dataModel: + space: "{{schemaSpace}}" + externalId: Equipment + version: "{{dataModelVersion}}" + destinationType: Equipment + instanceSpace: "{{instanceSpace}}" +ignoreNullFields: true +isPublic: true +conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.sql new file mode 100644 index 00000000..0857728f --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.sql @@ -0,0 +1,23 @@ +-- Transformation: Equipment → Asset edge (sets asset property on Equipment instances) +-- Target view : Equipment (space: {{schemaSpace}}, version: {{dataModelVersion}}) +-- Source RAW : db_{{location}}_sap.equipment joined with functional_location +-- Run order : 3rd — run after both tr_sap_assets and tr_sap_equipment +-- +-- SCAFFOLD — links each equipment to its functional location (parent asset) via the +-- Funcloc column (functional location assigned to the equipment in SAP). +-- Verify column name against your actual RAW schema. +-- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. + +SELECT + concat('{{sapSystem}}:equip:', cast(e.Equipment AS STRING)) AS externalId, + '{{instanceSpace}}' AS space, + + -- asset: direct relation to the ISAAsset instance for the equipment's functional location + node_reference( + '{{instanceSpace}}', + concat('{{sapSystem}}:floc:', cast(e.Funcloc AS STRING)) -- Funcloc: assigned functional location + ) AS asset + +FROM `db_{{location}}_sap`.`equipment` AS e +WHERE isnotnull(e.Equipment) + AND isnotnull(e.Funcloc) diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.yaml new file mode 100644 index 00000000..142d3406 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.yaml @@ -0,0 +1,14 @@ +externalId: "tr_{{location}}_sap_equipment_to_asset" +name: "tr:{{location}}:sap:equipment_to_asset" +dataSetExternalId: "{{dataset}}" +destination: + type: instances + dataModel: + space: "{{schemaSpace}}" + externalId: Equipment + version: "{{dataModelVersion}}" + destinationType: Equipment + instanceSpace: "{{instanceSpace}}" +ignoreNullFields: true +isPublic: true +conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.sql new file mode 100644 index 00000000..7f1568a6 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.sql @@ -0,0 +1,33 @@ +-- Transformation: SAP Work Orders → WorkOrder DM instances +-- Target view : WorkOrder (space: {{schemaSpace}}, version: {{dataModelVersion}}) +-- Source RAW : db_{{location}}_sap.workorder +-- Run order : 4th — run after tr_sap_assets +-- +-- SCAFFOLD — SAP column names (OrderId, Descript, OrderType, etc.) reflect the default +-- ExHeaderSet OData entity schema. Verify against your actual RAW table. +-- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. + +SELECT + cast(OrderId AS STRING) AS externalId, + '{{instanceSpace}}' AS space, + + cast(ShortText AS STRING) AS name, + cast(OrderId AS STRING) AS sourceId, + cast(OrderType AS STRING) AS type, + cast(OrderStatus AS STRING) AS status, + cast(BasicStartDate AS TIMESTAMP) AS scheduledStartTime, + cast(BasicFinDate AS TIMESTAMP) AS scheduledEndTime, + cast(ActualStart AS TIMESTAMP) AS startTime, + cast(ActualFinish AS TIMESTAMP) AS endTime, + 'SAP Work Order' AS sourceContext, + + -- sysTagsFound: functional location tag for downstream SQL contextualization + -- Set populateSysTagsFound: false in default.config.yaml to omit + case + when '{{populateSysTagsFound}}' = 'true' AND isnotnull(FunctLoc) + then array(cast(FunctLoc AS STRING)) + else array() + end AS sysTagsFound + +FROM `db_{{location}}_sap`.`workorder` +WHERE isnotnull(OrderId) diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.yaml new file mode 100644 index 00000000..275f3867 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.yaml @@ -0,0 +1,14 @@ +externalId: "tr_{{location}}_sap_maintenance_orders" +name: "tr:{{location}}:sap:maintenance_orders" +dataSetExternalId: "{{dataset}}" +destination: + type: instances + dataModel: + space: "{{schemaSpace}}" + externalId: WorkOrder + version: "{{dataModelVersion}}" + destinationType: WorkOrder + instanceSpace: "{{instanceSpace}}" +ignoreNullFields: true +isPublic: true +conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.sql new file mode 100644 index 00000000..b6fa85f5 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.sql @@ -0,0 +1,39 @@ +-- Transformation: Operation → WorkOrder relation (sets workOrder property on Operation instances) +-- Target view : Operation (space: {{schemaSpace}}, version: {{dataModelVersion}}) +-- Source RAW : db_{{location}}_sap.worktask +-- Run order : 6th — run after both tr_sap_maintenance_orders and tr_sap_operations +-- +-- SCAFFOLD — joins worktask to workorder via OrderId to resolve the parent work order reference. +-- Verify column names against your actual RAW tables. +-- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. + +WITH unique_operations AS ( + SELECT + *, + row_number() OVER (PARTITION BY OrderId, Activity ORDER BY OrderId) AS rn + FROM `db_{{location}}_sap`.`worktask` +), +unique_orders AS ( + SELECT + *, + row_number() OVER (PARTITION BY OrderId ORDER BY OrderId) AS rn + FROM `db_{{location}}_sap`.`workorder` +) +SELECT + concat(cast(op.OrderId AS STRING), '-', cast(op.Activity AS STRING)) AS externalId, + '{{instanceSpace}}' AS space, + + -- workOrder: direct relation to the parent WorkOrder instance + node_reference( + '{{instanceSpace}}', + cast(wo.OrderId AS STRING) + ) AS workOrder + +FROM unique_operations AS op +JOIN unique_orders AS wo + ON op.OrderId = wo.OrderId +WHERE isnotnull(op.OrderId) + AND isnotnull(op.Activity) + AND isnotnull(wo.OrderId) + AND op.rn = 1 + AND wo.rn = 1 diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.yaml new file mode 100644 index 00000000..509a49b2 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.yaml @@ -0,0 +1,14 @@ +externalId: "tr_{{location}}_sap_operation_to_order" +name: "tr:{{location}}:sap:operation_to_order" +dataSetExternalId: "{{dataset}}" +destination: + type: instances + dataModel: + space: "{{schemaSpace}}" + externalId: Operation + version: "{{dataModelVersion}}" + destinationType: Operation + instanceSpace: "{{instanceSpace}}" +ignoreNullFields: true +isPublic: true +conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.sql new file mode 100644 index 00000000..a0e5c5bd --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.sql @@ -0,0 +1,35 @@ +-- Transformation: SAP Work Tasks/Operations → Operation DM instances +-- Target view : Operation (space: {{schemaSpace}}, version: {{dataModelVersion}}) +-- Source RAW : db_{{location}}_sap.worktask +-- Run order : 5th — run after tr_sap_maintenance_orders +-- +-- SCAFFOLD — SAP column names (OrderId, Activity, LongText, etc.) reflect the default +-- ExOperationsSet OData entity schema. Verify against your actual RAW table. +-- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. + +-- Deduplicate on composite key (OrderId + Activity) in case the extractor produces duplicates +WITH unique_operations AS ( + SELECT + *, + row_number() OVER ( + PARTITION BY OrderId, Activity + ORDER BY OrderId + ) AS rn + FROM `db_{{location}}_sap`.`worktask` +) +SELECT + concat(cast(OrderId AS STRING), '-', cast(Activity AS STRING)) AS externalId, + '{{instanceSpace}}' AS space, + + cast(LongText AS STRING) AS name, + concat(cast(OrderId AS STRING), '-', cast(Activity AS STRING)) AS sourceId, + cast(ControlKey AS STRING) AS type, + cast(UserStatus AS STRING) AS status, + cast(EarlySchedStart AS TIMESTAMP) AS scheduledStartTime, + cast(EarlySchedFin AS TIMESTAMP) AS scheduledEndTime, + 'SAP Operation' AS sourceContext + +FROM unique_operations +WHERE isnotnull(OrderId) + AND isnotnull(Activity) + AND rn = 1 diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.yaml new file mode 100644 index 00000000..f5cc34a0 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.yaml @@ -0,0 +1,14 @@ +externalId: "tr_{{location}}_sap_operations" +name: "tr:{{location}}:sap:operations" +dataSetExternalId: "{{dataset}}" +destination: + type: instances + dataModel: + space: "{{schemaSpace}}" + externalId: Operation + version: "{{dataModelVersion}}" + destinationType: Operation + instanceSpace: "{{instanceSpace}}" +ignoreNullFields: true +isPublic: true +conflictMode: upsert From e55fa9f752b6479d32881ee8b69bfdcbbfded3af Mon Sep 17 00:00:00 2001 From: Jan Inge Bergseth <31886431+BergsethCognite@users.noreply.github.com> Date: Tue, 12 May 2026 11:13:26 +0200 Subject: [PATCH 08/18] Updated OPC-UA config example --- .../raw/db_opcua.Database.yaml | 2 +- .../tr_opcua_timeseries.Transformation.sql | 50 ------------------- .../tr_opcua_timeseries.Transformation.yaml | 14 ------ 3 files changed, 1 insertion(+), 65 deletions(-) delete mode 100644 modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql delete mode 100644 modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml diff --git a/modules/sourcesystem/cdf_opcua_foundation/raw/db_opcua.Database.yaml b/modules/sourcesystem/cdf_opcua_foundation/raw/db_opcua.Database.yaml index c13335eb..3ba2f359 100644 --- a/modules/sourcesystem/cdf_opcua_foundation/raw/db_opcua.Database.yaml +++ b/modules/sourcesystem/cdf_opcua_foundation/raw/db_opcua.Database.yaml @@ -1 +1 @@ -dbName: "db_{{location}}_opcua" +dbName: "{{raw_db_name_prefix}}_opcua_site1" diff --git a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql deleted file mode 100644 index c8eed049..00000000 --- a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql +++ /dev/null @@ -1,50 +0,0 @@ --- Transformation: OPC-UA node metadata → ISATimeSeries DM instances --- Target view : ISATimeSeries (space: {{schemaSpace}}, version: {{dataModelVersion}}) --- Source RAW : db_{{location}}_opcua.nodes --- --- SCAFFOLD — column names reflect the default OPC-UA Extractor RAW schema when --- store-raw-metadata: true is set. OPC-UA node structure is highly site-specific; --- verify column names against your actual RAW table before running in production. --- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. --- --- Default OPC-UA Extractor RAW columns (verify for your extractor version): --- Id — OPC-UA node ID string (e.g. "ns=2;s=Temperature.Tag1") --- DisplayName — Human-readable node name --- Description — Node description (may be empty) --- DataType — OPC-UA data type (e.g. "Double", "Float", "Int32") --- NodeClass — "Variable" for measurement nodes - -SELECT - -- Identity: use the extractor-assigned externalId (id-prefix + node id) - concat('{{opcuaIdPrefix}}', Id) AS externalId, - '{{instanceSpace}}' AS space, - - -- Core metadata - DisplayName AS name, - Description AS description, - - -- Map OPC-UA DataType to CDF timeseries type - case - when lower(DataType) in ('boolean') then 'string' - when lower(DataType) in ('string', 'localizedtext') then 'string' - else 'numeric' - end AS type, - false AS isStep, - - -- Source context label - 'OPC-UA' AS sourceContext, - - -- sysTagsFound: array of candidate tag identifiers for downstream SQL contextualization. - -- The pattern below extracts the last segment of the OPC-UA display name, which often - -- corresponds to a functional location or equipment tag. Adapt to your site's node naming. - -- Set populateSysTagsFound: false in default.config.yaml to omit this field entirely. - case - when '{{populateSysTagsFound}}' = 'true' - then array( - regexp_extract(DisplayName, '[^._\\-]+$', 0) -- last segment after '.', '_', or '-' - ) - else array() - end AS sysTagsFound - -FROM `db_{{location}}_opcua`.`nodes` -WHERE NodeClass = 'Variable' -- only ingest measurement nodes, not object/folder nodes diff --git a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml deleted file mode 100644 index 7efac67b..00000000 --- a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml +++ /dev/null @@ -1,14 +0,0 @@ -externalId: "tr_{{location}}_opcua_timeseries" -name: "tr:{{location}}:opcua:timeseries" -dataSetExternalId: "{{dataset}}" -destination: - type: instances - dataModel: - space: "{{schemaSpace}}" - externalId: ISATimeSeries - version: "{{dataModelVersion}}" - destinationType: ISATimeSeries - instanceSpace: "{{instanceSpace}}" -ignoreNullFields: true -isPublic: true -conflictMode: upsert From a34ed69029a38a375ec730e93cc8ba3fcb329d9a Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Wed, 13 May 2026 10:23:53 +0200 Subject: [PATCH 09/18] updated PRD --- PRD.md | 985 ++++++++++++++++++++++----------------------------------- 1 file changed, 377 insertions(+), 608 deletions(-) diff --git a/PRD.md b/PRD.md index 4829a0b5..d186fce9 100644 --- a/PRD.md +++ b/PRD.md @@ -2,36 +2,36 @@ ## Overview -The **Foundation Deployment Pack** (`dp:foundation`) is a scalable, modular CDF deployment package that gives industrial projects a near zero-configuration starting point. It covers the full stack from source system extraction through contextualization: production-grade extractor configuration templates for PI, OPC-UA, and SAP; the ISA Manufacturing Extension data model; a modular ingestion orchestration workflow; and contextualization capabilities including file annotation and entity matching. +The **Foundation Deployment Pack** (`dp:foundation`) is a scalable, modular CDF deployment package that gives industrial projects a near zero-configuration starting point. It covers the full stack from source system extraction through contextualization: production-grade extractor configuration templates for PI, OPC-UA, SAP, DB, and file sources; a choice between ISA Manufacturing Extension and CFIHOS Oil & Gas data models; a modular ingestion orchestration workflow; and contextualization capabilities including file annotation and entity matching. Every module is independently deployable. The package supports `canCherryPick = true`, so teams select only the source systems and capabilities they need. Adding a new source system or contextualization step means adding a module — not modifying existing ones. +All resource naming strictly follows `.cursor/rules/cdf-naming-conventions.mdc`. Each module is fully self-contained — no shared foundation module is required. Auth, datasets, and spaces that a module needs are defined within that module itself. + --- ## Background ### Who is this for? -The primary users of `dp:foundation` are **Data Engineers (DEs)** and **Cognite partners** who are responsible for standing up CDF environments for industrial customers. The DP is also well-suited for **POC and quickstart projects** where speed of deployment matters as much as long-term scalability. Secondary users are **Solutions Architects** who define the project structure before a DE takes over. +The primary users of `dp:foundation` are **Data Engineers (DEs)** and **Cognite partners** who are responsible for standing up CDF environments for industrial customers. Secondary users are **Solutions Architects** who define the project structure before a DE takes over. ### What is the pain today? When a DE starts a new CDF project, there is no authoritative, reusable starting point that covers the full stack. The options available today each have gaps: -- `**dp:quickstart`** is demo-oriented — it ships synthetic data and pre-configured connections that are tightly coupled to a fictional "Springfield" site. Removing synthetic data, renaming locations, or swapping a source system requires touching files across multiple modules. It is not designed to evolve into a production deployment. +- **`dp:quickstart`** is demo-oriented — it ships synthetic data and pre-configured connections that are tightly coupled to a fictional "Springfield" site. Removing synthetic data, renaming locations, or swapping a source system requires touching files across multiple modules. It is not designed to evolve into a production deployment. - **Blank-slate projects** (no DP) require DEs to assemble spaces, datasets, groups, extractor configs, transformations, and orchestration from scratch on every engagement. This leads to inconsistent project structures, configuration drift, and undocumented decisions. -- **gss-knowledge-base** contains mature extractor configuration templates (PI, OPC-UA, SAP) but they are not wired into any deployable DP — DEs must manually locate, copy, and adapt them per project. -- **lack of standardisation and compliance with best practices**: a simple research showed that out of eight delivered QS there were no consistency in naming convention, access control, data model alignment - -The result is that each new deployment is partially reinvented, slowing delivery and introducing variability that makes cross-project support harder. +- **gss-knowledge-base** contains mature extractor configuration templates (PI, OPC-UA, SAP, DB, Files) but they are not wired into any deployable DP — DEs must manually locate, copy, and adapt them per project. +- **Lack of standardisation**: a simple research showed that out of eight delivered quickstarts there was no consistency in naming conventions, access control, or data model alignment. ### What does this enable? `dp:foundation` gives DEs and partners a single, composable starting point they can deploy to a real customer project on day one: - A near **zero-configuration deployment**: the DP deploys and runs without significant initial configuration beyond filling in credentials and a `location` variable. -- Extractor configuration templates for the three most common industrial source systems are bundled — no gss-knowledge-base lookup required. -- Transformations are provided as **generalized examples and AI/Cursor scaffolds**, not universally valid production SQL. They are guided by cursor rules (see `.cursor/rules/cdf-transformations.mdc`) so DEs can use them as input to AI tools to generate site-specific SQL rapidly. +- Extractor configuration templates for the most common industrial source systems are bundled — no gss-knowledge-base lookup required. +- Transformations are provided as **generalized examples and AI/Cursor scaffolds**, guided by cursor rules (`.cursor/rules/cdf-transformations.mdc`) so DEs can use them as input to AI tools to generate site-specific SQL rapidly. - The project structure is standardised and parameterised by `location` — a new site is a new variable value, not a new set of files. - Contextualization is a first-class, deployable capability, not an afterthought. - The architecture is open for extension (add a module, set a variable) rather than modification (fork and edit). @@ -41,49 +41,48 @@ The result is that each new deployment is partially reinvented, slowing delivery ## Goals - Provide a **near zero-configuration** CDF project foundation: deploy and run with minimal initial setup beyond credentials and a `location` identifier. -- Ship production-grade extractor configuration templates for **PI**, **OPC-UA**, and **SAP** sourced from gss-knowledge-base, so field engineers get a real starting point with all required parameters documented. +- Ship production-grade extractor configuration templates for **PI**, **OPC-UA**, **SAP**, **DB**, and **file sources** from gss-knowledge-base, so field engineers get a real starting point with all required parameters documented. - Ship transformation SQL as **generalized examples and AI/Cursor scaffolds**, guided by cursor rules (`.cursor/rules/cdf-transformations.mdc`), that DEs can adapt rapidly for site-specific data. +- Support a choice between **ISA Manufacturing Extension** and **CFIHOS Oil & Gas** data models — selectable via a single config variable. - Each source system module is self-contained and independently deployable — no module fails to deploy because another is absent. - Ingestion orchestration is source-agnostic: configuring which transformations run in which phase is the only customization required when adding or removing a source system. -- Contextualization modules (file annotation, entity matching) and a contextualization quality dashboard are first-class parts of this DP. - Include a **CLI-based configuration wizard (P1)** to guide users through auth, source system selection, and initial variable setup. --- ## Non-Goals (v1 Scope Exclusions) -The following are deliberately out of scope for the initial release. Excluding them keeps v1 focused and deliverable; they are candidates for later phases. - - -| Excluded | Rationale | -| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **`qs_enterprise_dm` and `rmdm` data model support** | v1 ships with the ISA Manufacturing Extension data model only. `qs_enterprise_dm` and `rmdm` variants (including `cdf_connection_sql` which is qs_enterprise-specific) are P1 additions once the ISA transformation set is validated end-to-end. | -| **Maximo, Meridium, other CMMS** | SAP is the most common asset/maintenance source system in the target segment. Additional CMMS sources are P2+ work. | -| **OSIsoft PI Asset Framework (AF)** | `cdf_pi_foundation` covers the PI Data Archive (timeseries) via the PI .NET Extractor. PI AF hierarchy ingestion requires a separate extractor and transformation pattern; not in v1. | -| **SAP PM via IDoc / RFC** | The SAP OData extractor pattern is the primary integration. IDoc and RFC-based extractions require different tooling and are not covered. | -| **OPC-UA Historical Access (HDA)** | The OPC-UA module covers live/subscribed data. Historical data backfill via HDA is a separate configuration concern; left as a documented extension pattern. | -| **OOTB (Out-of-the-Box) Cognite project setup** | `dp:foundation` does not configure IDP, project creation, or network connectivity. It assumes a provisioned CDF project with IDP authentication already in place. | -| **Atlas AI / OOTB Agents** | AI agent deployment (`dp:atlas_ai`) is a P2 concern layered on top of a working foundation. | -| **Automated transformation unit tests** | A testing framework for verifying transformation SQL output is a P1 concern. | -| **Multi-tenant or multi-project federation** | Each deployment of `dp:foundation` targets a single CDF project. Cross-project data federation is out of scope. | -| **Sharepoint / document source system** | File ingestion from SharePoint is not included in v1. A generic `cdf_documents_foundation` module is a P1 candidate. | -| **Japanese / multi-language localization** | Japanese labels for view and property names are a future consideration. Not in v1 scope. | -| **CI/CD pipeline templates for ADO** | Many projects are ADO-based rather than GitHub-based. A "sister" package of ADO CI/CD pipeline templates is a valid need but a separate initiative around SOPs and branching strategy templates. | -| **Module dependency auto-resolution** | Automatically resolving and prompting the user to include dependent modules is a desirable UX improvement but deferred to a later toolkit-level enhancement (P1). | - +| Excluded | Rationale | +|---|---| +| **Maximo, Meridium, other CMMS** | SAP is the most common asset/maintenance source in the target segment. Additional CMMS sources are P2+ work. | +| **OSIsoft PI Asset Framework (AF)** | `cdf_pi_foundation` covers the PI Data Archive (timeseries). PI AF hierarchy ingestion requires a separate extractor; not in v1. | +| **SAP PM via IDoc / RFC** | The SAP OData extractor pattern is the primary integration. IDoc/RFC-based extractions require different tooling. | +| **OPC-UA Historical Access (HDA)** | The OPC-UA module covers live/subscribed data. HDA backfill is a documented extension pattern for P2+. | +| **OOTB CDF project setup** | `dp:foundation` does not configure IDP, project creation, or network connectivity. It assumes a provisioned CDF project. | +| **Atlas AI / OOTB Agents** | AI agent deployment (`dp:atlas_ai`) is a P2 concern layered on top of a working foundation. | +| **Automated transformation unit tests** | A testing framework for verifying SQL output is a P2 concern. | +| **Multi-tenant or multi-project federation** | Each `dp:foundation` deployment targets a single CDF project. | +| **Japanese / multi-language localization** | Future consideration. Not in v1 scope. | +| **CI/CD pipeline templates for ADO** | A separate initiative around SOPs and branching strategy templates. | +| **Module dependency auto-resolution** | Automatically resolving dependent modules is a desirable toolkit-level enhancement (P1). | --- ## Target Users - -| Persona | How this DP helps | -| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| Persona | How this DP helps | +|---|---| | **Field Engineers / DEs** setting up a new customer project | Drop-in extractor config templates with all parameters documented; near zero-config start; transformations as AI scaffolds rather than manual SQL | -| **POC / quickstart projects** | Fast, consistent baseline that deploys in a day without demo data or synthetic coupling | | **Solutions Architects** designing a scalable CDF project | Modular structure grows by adding modules, not by forking; shared variable contract means location-specific config lives in one place | -| **Customers** deploying CDF for the first time | Clear, layered architecture from data model → source systems → orchestration → contextualization; cherry-pick only what applies | +| **Partners** deploying CDF for the first time | Clear, layered architecture from data model → source systems → orchestration → contextualization; cherry-pick only what applies | + +--- + +## Step 0 — Prerequisites: Auth Setup +`dp:foundation` does not prescribe or deploy IDP groups, app registrations, or project-level auth configuration. These are set up outside the DP according to the standard Cognite access management process. Refer to the [Cognite Access Management documentation](https://docs.cognite.com/cdf/access/) and your organisation's IDP configuration guide before deploying any module. + +Each source system module that requires a CDF group (e.g. the workflow execution group in `cdf_ingestion_foundation`) ships its own Group YAML. The DE populates the `sourceId` field in that YAML with the corresponding IDP group object ID after the IDP group has been created. --- @@ -95,47 +94,44 @@ The following are deliberately out of scope for the initial release. Excluding t [packages.foundation] id = "dp:foundation" title = "Foundation Deployment Pack" -description = "A scalable, modular foundation for industrial CDF projects. Includes an enterprise data model, production-grade extractor config templates for PI, OPC-UA, and SAP, modular ingestion orchestration, and contextualization with quality dashboards." +description = "A scalable, modular foundation for industrial CDF projects. Near zero-config start with ISA Manufacturing Extension or CFIHOS Oil & Gas DM, production-grade extractor config templates for PI, OPC-UA, SAP, DB, and file sources, modular ingestion orchestration, and contextualization." canCherryPick = true modules = [ - # Core infrastructure - "foundation/cdf_foundation", + # Data models — choose one or both "models/isa_manufacturing_extension", + "models/cfihos_oil_and_gas_extension", # Source systems — deploy the ones matching your site "sourcesystem/cdf_pi_foundation", "sourcesystem/cdf_opcua_foundation", "sourcesystem/cdf_sap_foundation", + "sourcesystem/cdf_db_foundation", + "sourcesystem/cdf_files_foundation", # Ingestion orchestration "foundation/cdf_ingestion_foundation", # Contextualization "accelerators/contextualization/cdf_file_annotation", "accelerators/contextualization/cdf_entity_matching", - # Search - "accelerators/industrial_tools/cdf_search", - # Contextualization quality - "dashboards/context_quality", + # Quality tooling + "tools/apps/qualitizer", ] ``` New modules created as part of this DP: -- `foundation/cdf_foundation` - `sourcesystem/cdf_pi_foundation` - `sourcesystem/cdf_opcua_foundation` - `sourcesystem/cdf_sap_foundation` +- `sourcesystem/cdf_db_foundation` +- `sourcesystem/cdf_files_foundation` - `foundation/cdf_ingestion_foundation` Existing modules referenced without modification: - `models/isa_manufacturing_extension` +- `models/cfihos_oil_and_gas_extension` - `accelerators/contextualization/cdf_file_annotation` - `accelerators/contextualization/cdf_entity_matching` -- `accelerators/industrial_tools/cdf_search` -- `dashboards/context_quality` - -P1 additions (not in v1 package): - -- `accelerators/contextualization/cdf_connection_sql` *(enabled when `dataModelVariant: qs_enterprise`)* +- `tools/apps/qualitizer` --- @@ -145,79 +141,62 @@ P1 additions (not in v1 package): ┌──────────────────────────────────────────────────────────────────────────────┐ │ LAYER 0 — DATA MODEL │ │ │ -│ ┌───────────────────────────────────────────────────────────────────────┐ │ -│ │ models/isa_manufacturing_extension [existing] │ │ -│ │ ISA Manufacturing Extension · views for Equipment, Asset, TimeSeries, Files │ │ -│ │ ISA-specific spaces · containers · ISA-aligned relationship model │ │ -│ └───────────────────────────────────────────────────────────────────────┘ │ +│ ┌─────────────────────────────────┐ ┌──────────────────────────────────┐ │ +│ │ models/isa_manufacturing_ │ │ models/cfihos_oil_and_gas_ │ │ +│ │ extension [existing] │ │ extension [existing] │ │ +│ │ Equipment · Asset · TS · │ │ CFIHOS-aligned equipment, │ │ +│ │ WorkOrder · Operation │ │ document, and tag hierarchy │ │ +│ └─────────────────────────────────┘ └──────────────────────────────────┘ │ +│ (choose one or both; set dataModelVariant in config) │ └──────────────────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────────────────┐ -│ LAYER 1 — PROJECT FOUNDATION │ +│ LAYER 1 — SOURCE SYSTEMS (independently deployable; each self-contained) │ │ │ -│ ┌───────────────────────────────────────────────────────────────────────┐ │ -│ │ foundation/cdf_foundation [new] │ │ -│ │ Spaces · Datasets · Auth groups (scope hierarchy) · RAW databases │ │ -│ │ Superset of cdf_common — compatible variable contract │ │ -│ └───────────────────────────────────────────────────────────────────────┘ │ +│ cdf_pi_foundation cdf_opcua_foundation cdf_sap_foundation │ +│ [new] [new] [new] │ +│ EP config tmpl EP config tmpl EP config tmpl │ +│ Direct → DM TS Direct → DM TS RAW → 6 transformations │ +│ │ +│ cdf_db_foundation cdf_files_foundation │ +│ [new] [new] │ +│ EP config tmpl EP config tmpl │ +│ DB → RAW/DM Files → RAW/DM │ └──────────────────────────────────────────────────────────────────────────────┘ - │ │ │ - ┌─────────┘ ┌───────┘ ┌───────┘ - ▼ ▼ ▼ -┌──────────────────┐ ┌─────────────────┐ ┌────────────────────┐ -│ LAYER 2 — SOURCE SYSTEMS (independently deployable) │ -│ │ -│ sourcesystem/ │ sourcesystem/ │ sourcesystem/ │ -│ cdf_pi_ │ cdf_opcua_ │ cdf_sap_ │ -│ foundation │ foundation │ foundation │ -│ [new] │ [new] │ [new] │ -│ │ │ │ -│ EP config tmpl │ EP config tmpl │ EP config tmpl │ -│ (PI .NET) │ (OPC-UA) │ (SAP OData) │ -│ RAW DB + table │ RAW DB + table │ RAW DB + 5 tables │ -│ 1 transformation│ 1 transformation │ 6 transformations │ -│ TS → DM views │ TS → DM views │ Assets+Events→DM │ -└──────────────────┘ └─────────────────┘ └────────────────────┘ - │ │ │ - └────────────────────┴───────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────────────────┐ -│ LAYER 3 — INGESTION ORCHESTRATION │ +│ LAYER 2 — INGESTION ORCHESTRATION │ │ │ │ ┌───────────────────────────────────────────────────────────────────────┐ │ │ │ foundation/cdf_ingestion_foundation [new] │ │ │ │ Two-phase workflow: Population → Contextualization │ │ -│ │ Phase tasks are configured via variable lists — no hardcoded sources │ │ +│ │ Phase tasks configured via variable flags — no hardcoded sources │ │ │ │ Parallel execution within each phase · Abort on failure │ │ │ └───────────────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────────────┘ │ - ┌─────────────────────┼──────────────────────┐ - ▼ ▼ ▼ + ┌─────────────────────┼─────────────────────┐ + ▼ ▼ ▼ ┌──────────────────────────────────────────────────────────────────────────────┐ -│ LAYER 4 — CONTEXTUALIZATION (existing modules, no changes) │ +│ LAYER 3 — CONTEXTUALIZATION (existing modules, no changes) │ │ │ -│ ┌──────────────────┐ ┌───────────────────┐ ┌─────────────────────────┐ │ -│ │ cdf_file_ │ │ cdf_entity_ │ │ cdf_connection_sql │ │ -│ │ annotation │ │ matching │ │ │ │ -│ │ [existing] │ │ [existing] │ │ [existing] │ │ -│ │ P&ID annotation │ │ TS→Asset AI │ │ SQL relation builder │ │ -│ │ 4 functions │ │ matching │ │ TS→Equipment │ │ -│ │ 1 workflow │ │ 2 functions │ │ Order→Asset │ │ -│ └──────────────────┘ └───────────────────┘ └─────────────────────────┘ │ +│ ┌──────────────────────────────┐ ┌────────────────────────────────────┐ │ +│ │ cdf_file_annotation │ │ cdf_entity_matching │ │ +│ │ [existing] │ │ [existing] │ │ +│ │ P&ID annotation │ │ TS→Asset AI matching │ │ +│ │ 4 functions · 1 workflow │ │ 2 functions · 1 workflow │ │ +│ └──────────────────────────────┘ └────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────────────┘ │ - ┌─────────────────────┴──────────────────────┐ - ▼ ▼ + ▼ ┌──────────────────────────────────────────────────────────────────────────────┐ -│ LAYER 5 — SEARCH & QUALITY (existing modules, no changes) │ +│ LAYER 4 — QUALITY TOOLING (existing module, no changes) │ │ │ -│ accelerators/industrial_tools/cdf_search dashboards/context_quality │ -│ Location filters for scoped search Contextualization coverage │ -│ [existing] metrics and quality reports │ -│ [existing] │ +│ tools/apps/qualitizer │ +│ Interactive data quality inspection and remediation tool for DEs/partners │ +│ [existing] │ └──────────────────────────────────────────────────────────────────────────────┘ ``` @@ -225,88 +204,19 @@ P1 additions (not in v1 package): ## Module Specifications -### 1. `foundation/cdf_foundation` *(New)* - -**Purpose**: Project-scoped infrastructure shared by all modules in this DP. Creates the spaces, datasets, auth groups, and RAW databases that every source system and contextualization module references. Defines the canonical set of template variables used across the entire DP. - -**Auth group design** follows a coarse macro-group model covering: `admins`, `readonly`, `extractors`, `functions`, `workflow` — each scoped to the project dataset and instance spaces. A default global config is provided; DEs customise scope hierarchy per project (global config → site-specific override pattern) as needed. +### 1. `models/isa_manufacturing_extension` *(Existing — no changes)* -`cdf_foundation` is designed as a strict superset of `accelerators/cdf_common`. It creates all the same resources that `cdf_common` creates — the instance space, function space, ingestion dataset, RAW source database, RAW state database, and state table — using the same variable names so that existing modules (`cdf_file_annotation`, `cdf_entity_matching`, `cdf_connection_sql`, `cdf_ingestion_foundation`) that were written against the `cdf_common` variable contract work without changes. The annotation-specific CDF Function (`contextualization_connection_writer`) and ExtractionPipeline (`ctx_files_direct_relation_write`) from `cdf_common` are not included — those belong to `cdf_file_annotation`. - -On top of what `cdf_common` provides, `cdf_foundation` adds auth groups and a foundation dataset scoped to the deployment. - -**Resources**: - - -| Resource | Variable / External ID | Mirrors `cdf_common`? | Purpose | -| -------------- | -------------------------------------------- | --------------------- | ------------------------------------------- | -| `Space` | `{{ instanceSpace }}` | Yes | Primary instance space for DM data | -| `Space` | `{{ functionSpace }}` | Yes | Space for CDF Function instances | -| `DataSet` | `{{ dataset }}` | Yes | Shared dataset for ingestion resources | -| `DataSet` | `ds_{{location}}_foundation` | No (new) | Dataset for foundational resources | -| `RAW Database` | `{{ rawSourceDatabase }}` | Yes | Source data landing zone | -| `RAW Database` | `{{ rawStateDatabase }}` | Yes | Contextualization state database | -| `RAW Table` | `{{ rawStateDatabase }}.{{ rawStateTable }}` | Yes | State cursor table for annotation/sync jobs | -| `Group` | `grp_{{location}}_admins` | No (new) | Full project access for administrators | -| `Group` | `grp_{{location}}_readonly` | No (new) | Read-only access for viewers | -| `Group` | `grp_{{location}}_extractors` | No (new) | Write access for extractor service accounts | -| `Group` | `grp_{{location}}_functions` | No (new) | Access for CDF Function service accounts | - - -**File structure**: - -``` -foundation/cdf_foundation/ -├── module.toml -├── default.config.yaml -├── auth/ -│ ├── grp_admins.Group.yaml -│ ├── grp_readonly.Group.yaml -│ ├── grp_extractors.Group.yaml -│ └── grp_functions.Group.yaml -├── data_model/ -│ ├── instances.Space.yaml # {{ instanceSpace }} -│ └── functions.Space.yaml # {{ functionSpace }} -├── data_sets/ -│ ├── ingestion.DataSet.yaml # {{ dataset }} -│ └── foundation.DataSet.yaml # ds_{{location}}_foundation -└── raw/ - ├── source.Database.yaml # {{ rawSourceDatabase }} - ├── state.Database.yaml # {{ rawStateDatabase }} - └── state.Table.yaml # {{ rawStateDatabase }}.{{ rawStateTable }} -``` - -**Configuration variables** (`default.config.yaml`) — variable names intentionally match `cdf_common` defaults for compatibility: - - -| Variable | Default | Description | -| ------------------- | -------------------------------- | -------------------------------------------------------- | -| `location` | *(required)* | Site identifier, e.g. `oslo`, `stavanger` | -| `organization` | *(required)* | Org prefix for view/transformation references | -| `instanceSpace` | `{{location}}_instances` | Instance space for this site's DM data | -| `functionSpace` | `{{location}}_functions` | Space for CDF Function code nodes | -| `dataset` | `ingestion` | Shared dataset for transformations, functions, workflows | -| `rawSourceDatabase` | `ingestion` | RAW DB for source system landed data | -| `rawStateDatabase` | `contextualizationState` | RAW DB for state cursors | -| `rawStateTable` | `diagramParsing` | State table used by annotation and sync jobs | -| `schemaSpace` | `sp_isa_manufacturing_extension` | Schema space from `isa_manufacturing_extension` data model | -| `annotationSpace` | `{{location}}_instances` | Space where annotation edges are stored | -| `dataModelVersion` | `v1.0` | Data model version for transformation view references | +**Purpose**: Extends the CDF core data model with manufacturing-specific views covering Asset, Equipment, TimeSeries, and Maintenance entities. v1 default data model. +**Key implementation note**: Read `module.toml` and resource YAMLs to confirm exact `schemaSpace`, view external IDs, and property names before authoring transformation SQL. **Dependencies**: None --- -### 2. `models/isa_manufacturing_extension` *(Existing — no changes)* - -**Purpose**: Extends the CDF core data model (CDM) with manufacturing-specific views covering Asset, Equipment, TimeSeries, Files, and Maintenance entities. All source system transformations in this DP write into views defined here. This module already exists in the library and is referenced without modification. - -**Resources** (existing, unchanged): -- Schema space for the ISA Manufacturing Extension (confirm exact `spaceId` from `module.toml`) -- Containers and Views extending CDM for manufacturing asset hierarchy, equipment, timeseries, and maintenance +### 2. `models/cfihos_oil_and_gas_extension` *(Existing — no changes)* -**Key implementation note**: The exact `schemaSpace`, view external IDs, and property names that source system transformation SQL must reference should be read from the existing `module.toml` and resource YAMLs before authoring any transformation in `cdf_pi_foundation`, `cdf_opcua_foundation`, or `cdf_sap_foundation`. +**Purpose**: CFIHOS-aligned data model for oil & gas projects. Alternative to ISA Manufacturing Extension; selected via `dataModelVariant: cfihos_oil_and_gas` in each module's `default.config.yaml`. **Dependencies**: None @@ -314,45 +224,52 @@ foundation/cdf_foundation/ ### 3. `sourcesystem/cdf_pi_foundation` *(New)* -**Purpose**: Ingest PI timeseries metadata from a PI server into CDF RAW via the PI .NET Extractor, then transform the RAW data into `CogniteTimeSeries` data model instances. Ships with a complete, parameterized extractor configuration template sourced from gss-knowledge-base so a field engineer needs only to supply credentials. +**Purpose**: Ingest PI timeseries directly from a PI server into CDF via the PI .NET Extractor. The extractor writes timeseries data and metadata **directly to CDF** (no RAW landing step required). Ships with a complete, parameterized extractor configuration template sourced from gss-knowledge-base. + +**PI writes directly to CDF**: The PI .NET Extractor creates CDF TimeSeries resources and writes values directly. A lightweight DM-enrichment transformation maps CDF TimeSeries into the DM view (`ISATimeSeries` or equivalent). No RAW database or landing zone is needed. **Resources**: +| Resource | External ID | Purpose | +|---|---|---| +| `ExtractionPipeline` | `ep_timeseries_{{location}}_pi` | Pipeline health tracking and config delivery | +| `ExtractionPipeline Config` (remote) | *(attached to pipeline)* | PI .NET extractor remote config template | +| `Transformation` | `tr_pi_timeseries_{{location}}_to_isa` | CDF TimeSeries metadata → DM `ISATimeSeries` instances | -| Resource | External ID | Purpose | -| --------------------------- | ------------------------------- | ------------------------------------------------- | -| `ExtractionPipeline` | `ep_{{location}}_pi` | Pipeline health tracking and config delivery | -| `ExtractionPipeline Config` | *(attached to pipeline)* | PI .NET extractor config template | -| `RAW Database` | `db_{{location}}_pi` | PI tag metadata landing zone | -| `RAW Table` | `db_{{location}}_pi:timeseries` | PI tag name, description, unit, engineering range | -| `Transformation` | `tr_{{location}}_pi_timeseries` | RAW PI tags → `CogniteTimeSeries` DM instances | +**Extractor config — remote vs local split**: +The PI extractor config is split into two files: +- **Remote config** (`ep_pi.ExtractionPipeline.Config.yaml`): Pushed to CDF via ExtractionPipeline Config. Contains source-system-specific settings: PI server connection, extraction pipeline ID, data model destination, id-prefix, and tag filter. Managed by the DP. +- **Local config** (`config_local.yaml` — stays on extractor host, not committed to repo): Contains logger settings and Cognite connection (project, base URL, token URL, client ID/secret). These values are environment-specific and should not be pushed to CDF. -**Extractor config template** (from `gss-knowledge-base/extractors/toolkit_examples/pi_net_extractor/`): +> Cross-reference: [PI .NET Extractor documentation](https://docs.cognite.com/cdf/integration/guides/extraction/pi/) · gss-knowledge-base: `extractors/toolkit_examples/pi_net_extractor/` -Key customer-configured parameters: +Key remote config parameters: ```yaml -# Supplied via environment variables: -# PI_HOST — PI server hostname or IP -# PI_USER — PI server username -# PI_PASSWORD — PI server password -# COGNITE_BASE_URL, COGNITE_PROJECT, COGNITE_TOKEN_URL -# COGNITE_CLIENT_ID, COGNITE_CLIENT_SECRET -# -# Template-resolved at deploy time: -# extraction-pipeline.external-id: ep_{{location}}_pi +# Remote (pushed to CDF ExtractionPipeline Config): +# extraction-pipeline.external-id: ep_timeseries_{{location}}_pi # data-modeling.space: {{instanceSpace}} -# destination.dataset-external-id: {{dataSet}} +# destination.dataset-external-id: {{dataset}} # id-prefix: pi: +# +# Local (stays on extractor host — local config file): +# logger.console.level: info +# cognite.project: ${COGNITE_PROJECT} +# cognite.base-url: ${COGNITE_BASE_URL} +# cognite.idp-authentication.client-id: ${COGNITE_CLIENT_ID} +# cognite.idp-authentication.client-secret: ${COGNITE_CLIENT_SECRET} +# +# Source credentials (environment variables, not in config): +# PI_HOST, PI_USER, PI_PASSWORD ``` **Transformation notes**: -- SQL is provided as a **generalized scaffold** targeting ISA Manufacturing Extension views. Use with cursor rules (`.cursor/rules/cdf-transformations.mdc`) to adapt to site-specific tag naming and metadata properties. +- SQL scaffold maps PI timeseries metadata into the selected DM view - Maps PI tag name → `externalId` with `pi:` prefix -- Writes to `CogniteTimeSeries` view in `{{instanceSpace}}` -- `sysTagsFound` is populated by default (opt-out via `populateSysTagsFound: false` in `default.config.yaml`) to maintain downstream contextualization compatibility +- `sysTagsFound` populated by default (opt-out via `populateSysTagsFound: false`) +- Use with `.cursor/rules/cdf-transformations.mdc` to adapt to site-specific tag naming **File structure**: @@ -362,81 +279,66 @@ sourcesystem/cdf_pi_foundation/ ├── default.config.yaml ├── extraction_pipelines/ │ ├── ep_pi.ExtractionPipeline.yaml -│ └── ep_pi.ExtractionPipeline.Config.yaml -├── raw/ -│ └── db_pi.Database.yaml +│ └── ep_pi.ExtractionPipeline.Config.yaml # remote config only └── transformations/ - └── tr_pi_timeseries.Transformation.yaml + ├── tr_pi_timeseries.Transformation.yaml + └── tr_pi_timeseries.Transformation.sql ``` **Configuration variables**: +| Variable | Default | Description | +|---|---|---| +| `location` | *(inherited)* | Site identifier | +| `piIdPrefix` | `pi:` | External ID prefix for PI timeseries | +| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | -| Variable | Default | Description | -| ---------------------- | ------------- | ------------------------------------------------ | -| `location` | *(inherited)* | Site identifier | -| `piIdPrefix` | `pi:` | External ID prefix for PI timeseries | -| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | - - -**Environment variables required**: - +**Environment variables required** (on extractor host): - `PI_HOST`, `PI_USER`, `PI_PASSWORD` -- Standard CDF auth vars +- `COGNITE_PROJECT`, `COGNITE_BASE_URL`, `COGNITE_TOKEN_URL`, `COGNITE_CLIENT_ID`, `COGNITE_CLIENT_SECRET` -**Dependencies**: `foundation/cdf_foundation` +**Dependencies**: None (self-contained) --- ### 4. `sourcesystem/cdf_opcua_foundation` *(New)* -**Purpose**: Ingest OPC-UA node metadata via the OPC-UA Extractor into CDF RAW, then transform into `CogniteTimeSeries` data model instances. Follows the same RAW → Transformation pattern as PI and SAP for consistency and auditability. Ships with a complete, parameterized extractor configuration template sourced from gss-knowledge-base. +**Purpose**: Ingest OPC-UA node data via the OPC-UA Extractor directly into CDF. Like PI, the OPC-UA extractor writes timeseries **directly to CDF** — no RAW landing step. A DM-enrichment transformation maps CDF TimeSeries into the selected DM view. Ships with a parameterized extractor configuration template sourced from gss-knowledge-base. + +> **Production warning**: OPC-UA node structures are highly site-specific. Node filter lists (allow/deny by node ID pattern) **must** be configured before production use. The extractor template ships with commented-out example filters. Without filters, the extractor browses the full server tree, which may be very large. **Resources**: +| Resource | External ID | Purpose | +|---|---|---| +| `ExtractionPipeline` | `ep_timeseries_{{location}}_opcua` | Pipeline health tracking and config delivery | +| `ExtractionPipeline Config` (remote) | *(attached to pipeline)* | OPC-UA extractor remote config template | +| `Transformation` | `tr_opcua_timeseries_{{location}}_to_isa` | CDF TimeSeries metadata → DM `ISATimeSeries` instances | -| Resource | External ID | Purpose | -| --------------------------- | ---------------------------------- | ------------------------------------------------------------- | -| `ExtractionPipeline` | `ep_{{location}}_opcua` | Pipeline health tracking and config delivery | -| `ExtractionPipeline Config` | *(attached to pipeline)* | OPC-UA extractor config template | -| `RAW Database` | `db_{{location}}_opcua` | OPC-UA node metadata landing zone | -| `RAW Table` | `db_{{location}}_opcua:nodes` | OPC-UA variable nodes: name, description, data type, EU range | -| `Transformation` | `tr_{{location}}_opcua_timeseries` | RAW OPC-UA nodes → `CogniteTimeSeries` DM instances | +**Extractor config — remote vs local split**: +- **Remote config** (`ep_opcua.ExtractionPipeline.Config.yaml`): OPC-UA endpoint, node filters, publishing/sampling intervals, extraction pipeline ID. +- **Local config** (stays on extractor host): Logger settings, Cognite connection settings, auth credentials. -**Extractor config template** (from `gss-knowledge-base/extractors/toolkit_examples/opcua_extractor_speira_quickstart/`): +> Cross-reference: [OPC-UA Extractor documentation](https://docs.cognite.com/cdf/integration/guides/extraction/opc_ua/) · gss-knowledge-base: `extractors/toolkit_examples/opcua_extractor_speira_quickstart/` -Key customer-configured parameters: +Key remote config parameters: ```yaml -# Supplied via environment variables: -# OPCUA_ENDPOINT_URL — e.g. opc.tcp://192.168.1.10:4840 -# OPCUA_USER — OPC-UA server username -# OPCUA_PASSWORD — OPC-UA server password -# COGNITE_BASE_URL, COGNITE_PROJECT, COGNITE_TOKEN_URL -# COGNITE_CLIENT_ID, COGNITE_CLIENT_SECRET -# -# Template-resolved at deploy time: -# extraction-pipeline.external-id: ep_{{location}}_opcua -# destination.raw.database: db_{{location}}_opcua -# destination.raw.table: nodes +# Remote: +# endpoint.url: ${OPCUA_ENDPOINT_URL} +# extraction-pipeline.external-id: ep_timeseries_{{location}}_opcua # id-prefix: opcua: +# source.node-filter: # site-specific allow/deny lists — MUST configure +# source.publishing-interval: {{opcuaPublishingInterval}} +# source.sampling-interval: {{opcuaSamplingInterval}} # -# Site-specific (documented as commented examples in config): -# source.node-filter.allow / deny lists — OPC-UA node ID patterns to include/exclude -# source.browse-throttling — max-per-minute, max-parallelism -# source.publishing-interval — default 5000 ms -# source.sampling-interval — default 5000 ms +# Local (stays on extractor host): +# logger.console.level: info +# cognite.project, base-url, idp-authentication — from env vars +# OPCUA_USER, OPCUA_PASSWORD if server requires auth ``` -**Transformation notes**: - -- SQL is provided as a **generalized scaffold** targeting ISA Manufacturing Extension views. Use with cursor rules (`.cursor/rules/cdf-transformations.mdc`) to adapt to site-specific node naming. -- OPC-UA extractor writes node metadata to `db_{{location}}_opcua:nodes` (RAW) -- Transformation reads RAW and maps to `CogniteTimeSeries` view in `{{instanceSpace}}` -- External ID: `opcua:` -- `sysTagsFound` opt-out behavior same as PI module - **File structure**: ``` @@ -445,104 +347,62 @@ sourcesystem/cdf_opcua_foundation/ ├── default.config.yaml ├── extraction_pipelines/ │ ├── ep_opcua.ExtractionPipeline.yaml -│ └── ep_opcua.ExtractionPipeline.Config.yaml -├── raw/ -│ └── db_opcua.Database.yaml +│ └── ep_opcua.ExtractionPipeline.Config.yaml # remote config only └── transformations/ - └── tr_opcua_timeseries.Transformation.yaml + ├── tr_opcua_timeseries.Transformation.yaml + └── tr_opcua_timeseries.Transformation.sql ``` **Configuration variables**: +| Variable | Default | Description | +|---|---|---| +| `location` | *(inherited)* | Site identifier | +| `opcuaIdPrefix` | `opcua:` | External ID prefix for OPC-UA timeseries | +| `opcuaPublishingInterval` | `5000` | OPC-UA publishing interval in ms | +| `opcuaSamplingInterval` | `5000` | OPC-UA sampling interval in ms | +| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | -| Variable | Default | Description | -| ------------------------- | ------------- | ------------------------------------------------ | -| `location` | *(inherited)* | Site identifier | -| `opcuaIdPrefix` | `opcua:` | External ID prefix for OPC-UA timeseries | -| `opcuaPublishingInterval` | `5000` | OPC-UA publishing interval in ms | -| `opcuaSamplingInterval` | `5000` | OPC-UA sampling interval in ms | -| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | - - -**Environment variables required**: - -- `OPCUA_ENDPOINT_URL`, `OPCUA_USER`, `OPCUA_PASSWORD` -- Standard CDF auth vars +**Environment variables required** (on extractor host): +- `OPCUA_ENDPOINT_URL` (and optionally `OPCUA_USER`, `OPCUA_PASSWORD`) +- Standard Cognite auth vars -**Dependencies**: `foundation/cdf_foundation` +**Dependencies**: None (self-contained) --- ### 5. `sourcesystem/cdf_sap_foundation` *(New)* -**Purpose**: Ingest SAP functional locations, equipment master records, maintenance orders, and work operations into CDF RAW via a **single SAP OData extraction pipeline with multiple entity queries** configured within it (flocs, equipment, work orders, operations, notifications). Transformations are split by entity type to enable correct workflow sequencing (assets → equipment → equipment-to-asset → maintenance orders → operations). Single-plant by default; multi-plant via `sapPlants` list variable. Transformation SQL is provided as generalized scaffolds — no synthetic/sample data. +**Purpose**: Ingest SAP functional locations, equipment, maintenance orders, and operations into CDF via a **single SAP OData extraction pipeline** writing to RAW, then transform into DM instances. Single-plant by default; multi-plant via `sapPlants` list variable. -Ships with a complete SAP OData extractor configuration template sourced from gss-knowledge-base with single-plant default and multi-plant expansion support via a plant list variable. +> SAP OData service names and entity keys vary across SAP versions and NW Gateway configurations. Verify all service names and field names before deploying. **Resources**: +| Resource | External ID | Purpose | +|---|---|---| +| `ExtractionPipeline` | `ep_assets_{{location}}_sap` | Pipeline health tracking and config delivery | +| `ExtractionPipeline Config` (remote) | *(attached to pipeline)* | SAP OData extractor remote config template | +| `RAW Database` | `assets_{{location}}_sap` | SAP data landing zone | +| `Transformation` | `tr_sap_floc_{{location}}_to_isa_asset` | Functional locations → `ISAAsset` DM instances | +| `Transformation` | `tr_sap_equip_{{location}}_to_equipment` | Equipment master → `Equipment` DM instances | +| `Transformation` | `tr_sap_equip_{{location}}_to_asset_rel` | Equipment → Asset edge relationships | +| `Transformation` | `tr_sap_order_{{location}}_to_workorder` | Work orders → `WorkOrder` DM instances | +| `Transformation` | `tr_sap_oper_{{location}}_to_operation` | Work tasks → `Operation` DM instances | +| `Transformation` | `tr_sap_oper_{{location}}_to_order_rel` | Operation → WorkOrder edge relationships | -| Resource | External ID | Purpose | -| --------------------------- | ----------------------------------------- | ----------------------------------------------- | -| `ExtractionPipeline` | `ep_{{location}}_sap` | Pipeline health tracking and config delivery | -| `ExtractionPipeline Config` | *(attached to pipeline)* | SAP OData extractor config template | -| `RAW Database` | `db_{{location}}_sap` | SAP data landing zone | -| `RAW Table` | `db_{{location}}_sap:equipment` | SAP equipment master records | -| `RAW Table` | `db_{{location}}_sap:functional_location` | SAP functional location hierarchy | -| `RAW Table` | `db_{{location}}_sap:workorder` | SAP work orders (PM orders) | -| `RAW Table` | `db_{{location}}_sap:workpackage` | SAP work packages | -| `RAW Table` | `db_{{location}}_sap:worktask` | SAP work tasks (operations) | -| `RAW Table` | `db_{{location}}_sap:workitem` | SAP work items (sub-operations) | -| `RAW Table` | `db_{{location}}_sap:state_store` | OData extractor delta state (cursor tracking) | -| `Transformation` | `tr_{{location}}_sap_assets` | Functional locations → `Asset` DM instances | -| `Transformation` | `tr_{{location}}_sap_equipment` | Equipment master → `Equipment` DM instances | -| `Transformation` | `tr_{{location}}_sap_equipment_to_asset` | Equipment → Asset edge relationships | -| `Transformation` | `tr_{{location}}_sap_maintenance_orders` | Work orders → `MaintenanceOrder` DM instances | -| `Transformation` | `tr_{{location}}_sap_operations` | Work tasks/items → `Operation` DM instances | -| `Transformation` | `tr_{{location}}_sap_operation_to_order` | Operation → MaintenanceOrder edge relationships | - - -**Extractor config template** (from `gss-knowledge-base/extractors/toolkit_examples/sap_odata_extractor_remote/`): +**Extractor config — remote vs local split**: -Key customer-configured parameters: +- **Remote config** (`ep_sap.ExtractionPipeline.Config.yaml`): SAP Gateway URL, client number, endpoint list (FunclocListSet, EquipmentListSet, ExHeaderSet, ExOlistSet, ExOperationsSet, ExNotifheader), RAW database and table targets, state-store config. +- **Local config** (stays on extractor host): Logger, Cognite connection, SAP credentials (`SAP_USERNAME`, `SAP_PASSWORD`). -```yaml -# Supplied via environment variables: -# SAP_GATEWAY_URL — SAP NW Gateway base URL -# SAP_CLIENT — SAP client number -# SAP_USERNAME — SAP OData service user -# SAP_PASSWORD — SAP OData service password -# COGNITE_BASE_URL, COGNITE_PROJECT, COGNITE_TOKEN_URL -# COGNITE_CLIENT_ID, COGNITE_CLIENT_SECRET -# -# Template-resolved at deploy time: -# extraction-pipeline.external-id: ep_{{location}}_sap -# state-store.raw.database: db_{{location}}_sap -# state-store.raw.table: state_store -# -# Single-plant default (sapPlant: "1000"): -# Each endpoint targets db_{{location}}_sap with table names as above. -# -# Multi-plant expansion (sapPlants: ["1000", "2000", "3000"]): -# Additional per-plant RAW databases are generated: db_{{location}}_sap_{{plant}} -# Each plant gets its own endpoint entries for Equipment, FunctionalLocation, etc. -# Transformations union across plants using the sapPlants list variable. -# -# Endpoints configured (schedules are per-endpoint, default weekly cron): -# EquipmentListSet, FunclocListSet, ExHeaderSet (work orders), -# ExOlistSet (operations), ExOperationsSet (items), ExNotifheader (notifications) -``` - -**Multi-plant behavior**: - -- Default: `sapPlant: "1000"` → single RAW database, standard table names -- Multi-plant: `sapPlants: ["1000", "2000", "3000"]` → extractor config expands per plant, transformations use a `UNION ALL` pattern across plant-prefixed tables +> Cross-reference: [SAP OData Extractor documentation](https://docs.cognite.com/cdf/integration/guides/extraction/sap/) · gss-knowledge-base: `extractors/toolkit_examples/sap_odata_extractor_remote/` **Transformation notes**: -- SQL is provided as **generalized scaffolds** targeting ISA Manufacturing Extension views. Use with cursor rules (`.cursor/rules/cdf-transformations.mdc`) to adapt to site-specific SAP entity naming and structure. -- All SQL uses `{{location}}`, `{{organization}}`, `{{sapSystem}}`, `{{instanceSpace}}`, `{{schemaSpace}}` variables — no hardcoded site names -- `sysTagsFound` populated on `MaintenanceOrder` for downstream connection compatibility (opt-out via `populateSysTagsFound: false`) +- SQL is provided as **generalized scaffolds** targeting the selected DM. Use with `.cursor/rules/cdf-transformations.mdc` to adapt to site-specific SAP entity naming. +- Key columns to verify before production: `Functlocation`, `Descript`, `Supfloc`, `Fltyp`, `Equipment`, `OrderId`, `Activity` +- `sysTagsFound` populated on `WorkOrder` for downstream contextualization compatibility (opt-out via `populateSysTagsFound: false`) **File structure**: @@ -552,60 +412,107 @@ sourcesystem/cdf_sap_foundation/ ├── default.config.yaml ├── extraction_pipelines/ │ ├── ep_sap.ExtractionPipeline.yaml -│ └── ep_sap.ExtractionPipeline.Config.yaml +│ └── ep_sap.ExtractionPipeline.Config.yaml # remote config only ├── raw/ │ └── db_sap.Database.yaml └── transformations/ - ├── tr_sap_assets.Transformation.yaml - ├── tr_sap_equipment.Transformation.yaml - ├── tr_sap_equipment_to_asset.Transformation.yaml - ├── tr_sap_maintenance_orders.Transformation.yaml - ├── tr_sap_operations.Transformation.yaml - └── tr_sap_operation_to_order.Transformation.yaml + ├── tr_sap_assets.Transformation.yaml + .sql + ├── tr_sap_equipment.Transformation.yaml + .sql + ├── tr_sap_equipment_to_asset.Transformation.yaml + .sql + ├── tr_sap_maintenance_orders.Transformation.yaml + .sql + ├── tr_sap_operations.Transformation.yaml + .sql + └── tr_sap_operation_to_order.Transformation.yaml + .sql ``` **Configuration variables**: +| Variable | Default | Description | +|---|---|---| +| `location` | *(inherited)* | Site identifier | +| `sapSystem` | `s4hana` | SAP system label, used in external IDs | +| `sapPlant` | `1000` | Default single-plant code | +| `sapPlants` | `[]` | Override for multi-plant, e.g. `["1000","2000"]` | +| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | -| Variable | Default | Description | -| ---------------------- | ------------- | ---------------------------------------------------------------------- | -| `location` | *(inherited)* | Site identifier | -| `organization` | *(inherited)* | Org prefix for view references | -| `sapSystem` | `s4hana` | SAP system label, used in external IDs | -| `sapPlant` | `1000` | Default single-plant code | -| `sapPlants` | `[]` | Override with a list for multi-plant expansion, e.g. `["1000","2000"]` | -| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | +**Environment variables required** (on extractor host): +- `SAP_GATEWAY_URL`, `SAP_CLIENT`, `SAP_USERNAME`, `SAP_PASSWORD` +- Standard Cognite auth vars +**Dependencies**: None (self-contained) -**Environment variables required**: +--- -- `SAP_GATEWAY_URL`, `SAP_CLIENT`, `SAP_USERNAME`, `SAP_PASSWORD` -- Standard CDF auth vars +### 6. `sourcesystem/cdf_db_foundation` *(New)* + +**Purpose**: Ingest data from relational databases (MSSQL, PostgreSQL, Oracle, etc.) via the DB Extractor into CDF RAW, then transform into DM instances. The DB Extractor is configured with SQL queries that pull from source database tables on a schedule. Template sourced from gss-knowledge-base. + +**Resources**: + +| Resource | External ID | Purpose | +|---|---|---| +| `ExtractionPipeline` | `ep_db_{{location}}_{{dbSystem}}` | Pipeline health tracking and config delivery | +| `ExtractionPipeline Config` (remote) | *(attached to pipeline)* | DB extractor remote config template | +| `RAW Database` | `db_{{location}}_{{dbSystem}}` | DB source data landing zone | + +**Extractor config — remote vs local split**: + +- **Remote config**: Query list, RAW database/table targets, extraction pipeline ID, schedule. +- **Local config** (stays on extractor host): Logger, Cognite connection, database connection string (`DB_CONNECTION_STRING`). + +> Cross-reference: [DB Extractor documentation](https://docs.cognite.com/cdf/integration/guides/extraction/db_extractor/) · gss-knowledge-base: `extractors/toolkit_examples/db_extractor/` -**Dependencies**: `foundation/cdf_foundation` +**Configuration variables**: + +| Variable | Default | Description | +|---|---|---| +| `location` | *(inherited)* | Site identifier | +| `dbSystem` | `db` | Source database system label (e.g. `mssql`, `postgres`) | + +**Dependencies**: None (self-contained) --- -### 6. `foundation/cdf_ingestion_foundation` *(New)* +### 7. `sourcesystem/cdf_files_foundation` *(New)* -**Purpose**: A source-agnostic, two-phase ingestion workflow that orchestrates population and contextualization transformations. The `WorkflowVersion.yaml` deployed to CDF is **generated at build time** from per-task snippet templates by a Python script (`scripts/build_workflow.py`). A DE edits only `default.config.yaml` to declare which source systems are enabled and which data model variant is in use — then runs the script to produce the final workflow YAML before deploying. +**Purpose**: Ingest files and documents (from SharePoint, network shares, or other file stores) into CDF Files via the File Extractor. Enables downstream P&ID annotation via `cdf_file_annotation`. Template sourced from gss-knowledge-base. -This pattern is established in the library codebase (see `accelerators/key_extraction_aliasing`) and solves the optional-task problem cleanly: the generated YAML contains only the tasks for the enabled sources, so CDF never references a transformation that does not exist. +**Resources**: -**Design**: +| Resource | External ID | Purpose | +|---|---|---| +| `ExtractionPipeline` | `ep_files_{{location}}_{{fileSource}}` | Pipeline health tracking and config delivery | +| `ExtractionPipeline Config` (remote) | *(attached to pipeline)* | File extractor remote config template | + +**Extractor config — remote vs local split**: + +- **Remote config**: File source paths/SharePoint site URL, file type filters, extraction pipeline ID. +- **Local config** (stays on extractor host): Logger, Cognite connection, source credentials (`SHAREPOINT_CLIENT_ID`, `SHAREPOINT_CLIENT_SECRET`, or file share credentials). + +> Cross-reference: [File Extractor documentation](https://docs.cognite.com/cdf/integration/guides/extraction/file/) · gss-knowledge-base: `extractors/toolkit_examples/file_extractor/` + +**Configuration variables**: + +| Variable | Default | Description | +|---|---|---| +| `location` | *(inherited)* | Site identifier | +| `fileSource` | `sharepoint` | Source label (e.g. `sharepoint`, `fileshare`) | -The workflow has two sequential phases: +**Dependencies**: None (self-contained) -1. **Population phase** — loads data from RAW/DM into DM instances (source system transformations). Tasks within the phase run in parallel. -2. **Contextualization phase** — builds relationships between DM instances. Runs only after the entire population phase succeeds. Tasks within the phase run in parallel. +--- + +### 8. `foundation/cdf_ingestion_foundation` *(New)* -The contextualization tasks included in phase 2 are determined by `dataModelVariant`: +**Purpose**: A source-agnostic, two-phase ingestion workflow that orchestrates population and contextualization transformations. `WorkflowVersion.yaml` is **generated at build time** from per-task snippet templates by `scripts/build_workflow.py`. A DE edits only `default.config.yaml` to declare which sources are enabled and which DM variant is in use — then runs the script to produce the final workflow YAML before deploying. -- `isa_manufacturing_extension` → ISA-specific relationship transformations from the `isa_manufacturing_extension` module (v1 default) -- `qs_enterprise` → `cdf_connection_sql` transformations (P1, added when `qs_enterprise_dm` support ships) -- Future DM variants follow the same pattern +**Design**: -Any task failure aborts the workflow (`onFailure: abortWorkflow`). +1. **Population phase** — loads data into DM instances (source system transformations). Tasks within the phase run in parallel where no `dependsOn` is declared. +2. **Contextualization phase** — builds relationships between DM instances. Runs only after population phase succeeds. Tasks run in parallel within the phase. + +Contextualization task snippets included depend on `dataModelVariant`: +- `isa_manufacturing_extension` → ISA relationship transformations (v1 default) +- `cfihos_oil_and_gas` → CFIHOS relationship task snippets (v1) **Build-time generation flow**: @@ -621,65 +528,6 @@ default.config.yaml workflow_template/tasks/ workflows/wf_ingestion_v1.WorkflowVersion.yaml ← committed, deployed ``` -`**default.config.yaml**`: - -```yaml -workflow: "wf_{{location}}_ingestion" -workflowSchedule: "0 2 * * *" # daily at 02:00 UTC; "0 0 29 2 *" to disable - -# Which source system modules are deployed at this site -enabledSources: - pi: true - opcua: false - sap: true - -# Which contextualization tasks to include in phase 2 -# Driven by dataModelVariant — set manually only to override -enabledContextualization: - isaRelationships: true # auto-enabled when dataModelVariant: isa_manufacturing_extension - connectionSql: false # enable only when dataModelVariant: qs_enterprise (P1) - -# Selects the transformation set used in the contextualization phase -# Supported: isa_manufacturing_extension (v1) | qs_enterprise (P1) | rmdm (P1) -dataModelVariant: isa_manufacturing_extension -``` - -`**workflow_template/tasks/**` — one snippet per task, each a self-contained YAML block: - -```yaml -# task.pi_timeseries.yaml -- externalId: "tr_{{location}}_pi_timeseries" - type: transformation - parameters: - transformation: - externalId: "tr_{{location}}_pi_timeseries" - concurrencyPolicy: fail - onFailure: abortWorkflow -``` - -```yaml -# task.sap_equipment_to_asset.yaml (has dependsOn — script wires these automatically) -- externalId: "tr_{{location}}_sap_equipment_to_asset" - type: transformation - parameters: - transformation: - externalId: "tr_{{location}}_sap_equipment_to_asset" - concurrencyPolicy: fail - onFailure: abortWorkflow - dependsOn: - - externalId: "tr_{{location}}_sap_assets" - - externalId: "tr_{{location}}_sap_equipment" -``` - -`**scripts/build_workflow.py**` — what the script does: - -1. Reads `default.config.yaml` for `enabledSources`, `enabledContextualization`, `dataModelVariant` -2. Loads only the task snippets that correspond to enabled sources and the correct DM variant's contextualization tasks -3. Validates `dependsOn` references — warns if a dependency task was not included (e.g. `sap_equipment_to_asset` depends on `sap_assets`, which must also be enabled) -4. Assembles the full `WorkflowVersion.yaml` with a generated header comment noting the config it was built from -5. Writes to `workflows/wf_ingestion_v1.WorkflowVersion.yaml` -6. Supports `--check` flag for CI validation (confirms committed YAML matches what the current config would generate) - **DE workflow**: ```bash @@ -687,163 +535,120 @@ dataModelVariant: isa_manufacturing_extension # 2. Regenerate the workflow YAML python scripts/build_workflow.py -# 3. build +# 3. Build and deploy cdf build - -# 4. Deploy cdf deploy ``` -> **Adding a new source system**: Add a task snippet in `workflow_template/tasks/`, set `enabledSources.: true` in `default.config.yaml`, run `build_workflow.py`. No existing files change. - **Resources**: - -| Resource | External ID | Purpose | -| ----------------- | ----------------------------------- | ----------------------------------------------------- | -| `Workflow` | `wf_{{location}}_ingestion` | Orchestrates population → contextualization | -| `WorkflowVersion` | `wf_{{location}}_ingestion/v1` | Generated version with task graph for enabled sources | -| `WorkflowTrigger` | `wf_{{location}}_ingestion_trigger` | Scheduled execution (configurable cron) | -| `Group` | `grp_{{location}}_workflow` | Service account group for workflow execution | -| `Group` | `grp_{{location}}_workflow_user` | User group for manual workflow execution | - +| Resource | External ID | Purpose | +|---|---|---| +| `Workflow` | `wf_{{location}}_ingestion` | Orchestrates population → contextualization | +| `WorkflowVersion` | `wf_{{location}}_ingestion/v1` | Generated version with task graph for enabled sources | +| `WorkflowTrigger` | `wf_{{location}}_ingestion_trigger` | Scheduled execution (configurable cron) | +| `Group` | `gp_cdf_{{location}}_workflow` | Service account group for workflow execution | +| `Group` | `gp_cdf_{{location}}_workflow_user` | User group for manual workflow triggering/monitoring | **File structure**: ``` foundation/cdf_ingestion_foundation/ ├── module.toml -├── default.config.yaml # edit this to configure sources + DM variant +├── default.config.yaml ├── scripts/ -│ └── build_workflow.py # run after editing config; generates WorkflowVersion +│ └── build_workflow.py ├── workflow_template/ -│ ├── workflow.template.WorkflowVersion.yaml # top-level wrapper (workflowExternalId, version) │ └── tasks/ │ ├── task.pi_timeseries.yaml │ ├── task.opcua_timeseries.yaml │ ├── task.sap_assets.yaml │ ├── task.sap_equipment.yaml -│ ├── task.sap_equipment_to_asset.yaml │ ├── task.sap_maintenance_orders.yaml │ ├── task.sap_operations.yaml -│ ├── task.sap_operation_to_order.yaml -│ ├── ctx.isa_manufacturing_extension.equipment_connections.yaml # ISA ctx tasks (v1 default) -│ ├── ctx.isa_manufacturing_extension.ts_to_equipment.yaml -│ ├── ctx.isa_manufacturing_extension.maintenance_to_functional_loc.yaml +│ ├── task.db_ingest.yaml +│ ├── task.files_ingest.yaml +│ ├── ctx.isa_manufacturing_extension.equipment_to_asset.yaml │ ├── ctx.isa_manufacturing_extension.operation_to_order.yaml -│ ├── ctx.qs_enterprise.maintenance_order_to_asset.yaml # QS Enterprise ctx tasks (P1) -│ ├── ctx.qs_enterprise.ts_to_equipment.yaml -│ ├── ctx.qs_enterprise.activity_to_ts.yaml -│ ├── ctx.qs_enterprise.operation_to_asset.yaml -│ └── ctx.rmdm.asset_connections.yaml # RMDM ctx tasks (P1) +│ ├── ctx.cfihos.tag_to_document.yaml # CFIHOS ctx tasks (v1) +│ └── ctx.cfihos.tag_to_equipment.yaml ├── auth/ │ ├── grp_workflow.Group.yaml │ └── grp_workflow_user.Group.yaml └── workflows/ ├── wf_ingestion.Workflow.yaml - ├── wf_ingestion_v1.WorkflowVersion.yaml # GENERATED — do not edit by hand + ├── wf_ingestion_v1.WorkflowVersion.yaml # GENERATED — do not edit by hand └── wf_ingestion_trigger.WorkflowTrigger.yaml ``` -**Dependencies**: `foundation/cdf_foundation`. Source system and contextualization modules must be deployed before the workflow is triggered. +**Dependencies**: None (self-contained). Source system modules must be deployed before the workflow is triggered. --- -### 7. `accelerators/contextualization/cdf_file_annotation` *(Existing — no changes)* +### 9. `accelerators/contextualization/cdf_file_annotation` *(Existing — no changes)* -**Purpose**: P&ID and engineering document annotation using the Diagram Detect API. Discovers files, submits annotation jobs, processes results, and builds CogniteFile → CogniteAsset/Equipment edges. Includes pattern-based promotion and a Streamlit dashboard. +**Purpose**: P&ID and engineering document annotation using the Diagram Detect API. -**Resources** (existing): 4 CDF Functions, 1 Workflow, 6 RAW tables, 1 Extraction Pipeline, 1 Dataset, 1 data model for annotation state. +**Resources** (existing): 4 CDF Functions, 1 Workflow, 6 RAW tables, 1 Extraction Pipeline, 1 Dataset. -**Dependencies**: `accelerators/cdf_common` (spaces, datasets) — this dependency is met by deploying `foundation/cdf_foundation` which provides equivalent infrastructure under the same variable contract. +**Dependencies**: Requires `instanceSpace`, `functionSpace`, and `dataset` variables to be set in the deployment's variable file. --- -### 8. `accelerators/contextualization/cdf_entity_matching` *(Existing — no changes)* +### 10. `accelerators/contextualization/cdf_entity_matching` *(Existing — no changes)* -**Purpose**: AI-powered and rule-based timeseries-to-asset matching. Uses multi-method matching (rule-based + ML + manual expert mappings) to link `CogniteTimeSeries` instances to `Asset`/`Equipment` DM instances. +**Purpose**: AI-powered and rule-based timeseries-to-asset matching. -**Resources** (existing): 2 CDF Functions, 1 Workflow, 5 RAW tables, 1 Extraction Pipeline. +**Resources** (existing): 2 CDF Functions, 1 Workflow, 5 RAW tables. -**Dependencies**: `accelerators/cdf_common` (spaces, datasets). +**Dependencies**: Requires `instanceSpace` and `dataset` variables to be set in the deployment's variable file. --- -### 9. `accelerators/contextualization/cdf_connection_sql` *(Existing — no changes)* - -**Purpose**: SQL-based relationship builder that creates edges between DM instances using `sysTagsFound` populated by source system transformations. Links timeseries to equipment, maintenance orders to assets, and operations to assets. +### 11. `tools/apps/qualitizer` *(Existing — no changes)* -**Resources** (existing): 4 SQL Transformations. +**Purpose**: Interactive data quality inspection and remediation tool. DEs and partners can inspect and act on quality issues across assets, timeseries, and files — record-level review with actionable controls. Complements contextualization coverage metrics with hands-on quality work. -**Dependencies**: Source system transformations must have run first and populated `sysTagsFound`. Relies on `{{instanceSpace}}` and `{{schemaSpace}}` variables from `cdf_foundation`. - ---- - -### 10. `accelerators/industrial_tools/cdf_search` *(Existing — no changes)* - -**Purpose**: Configures location-scoped filters for CDF Search, scoped to the site's instance space and linked to the process industry data model. - -**Resources** (existing): 1 Location Filter. - -**Dependencies**: `models/isa_manufacturing_extension` (data model space). - ---- - -### 11. `dashboards/context_quality` *(Existing — no changes)* - -**Purpose**: Contextualization quality dashboard showing coverage metrics: how many timeseries, assets, equipment, files, and maintenance orders have been successfully contextualized. - -**Resources** (existing): - -- `DataSet`: `context_quality_apps` — created by this module -- `Function`: `context_quality_handler` — computes contextualization metrics by querying the CDF API at runtime -- `Streamlit`: `context_quality_dashboard` — interactive quality dashboard - -**Dependency analysis**: The module has no hard structural dependencies on specific RAW tables or data model spaces from other modules. The CDF Function queries the live CDF API (DM instances, timeseries, assets) to compute metrics — it does not join against a predetermined set of RAW tables. The function YAML references `space: context_quality`, which is the module's own space for storing the function code node (a `DATA_MODELING_ONLY` mode requirement), not a runtime data dependency on another module's space. - -This means the module deploys and operates independently. It will display meaningful metrics as soon as source system transformations have run and DM instances exist. No structural changes are needed to use it in this DP. +**Dependencies**: None structural; requires DM instances to be present. --- ## Configuration Variables — Consolidated Reference -Variables are defined once — in `foundation/cdf_foundation/default.config.yaml` — and flow to every other module via the shared variable contract. No module hardcodes a site name or space identifier. - - -| Variable | Owner | Consumed by | -| ------------------------ | -------------------------- | ------------------------------------------------------------- | -| `location` | `cdf_foundation` | All modules — used in every external ID and RAW database name | -| `organization` | `cdf_foundation` | `cdf_sap_foundation`, all transformation SQL view references | -| `schemaSpace` | `cdf_foundation` | All source system transformations (DM view lookup) | -| `instanceSpace` | `cdf_foundation` | All source system transformations (DM instance write target) | -| `dataSet` | `cdf_foundation` | All source system extraction pipelines and transformations | -| `dataModelVersion` | `cdf_foundation` | All transformation view references | -| `populateSysTagsFound` | Per source module | Source system transformations; set `false` to omit the field | -| `populationTasks` | `cdf_ingestion_foundation` | Workflow task graph generation | -| `contextualizationTasks` | `cdf_ingestion_foundation` | Workflow task graph generation | -| `sapPlant` / `sapPlants` | `cdf_sap_foundation` | SAP extractor config and transformation UNION logic | +Each module defines its own `default.config.yaml`. The following variables appear across multiple modules and **must be set consistently** in the deployment's environment variable file (or toolkit config). There is no shared foundation module that centralises them. +| Variable | Defined in | Consumed by | +|---|---|---| +| `location` | Every module | External IDs, RAW database names, space names across all modules | +| `organization` | `cdf_sap_foundation` | SAP transformation SQL view references | +| `schemaSpace` | Each source module | All source system transformations (DM view lookup) | +| `instanceSpace` | Each source module | All source system transformations (DM instance write target) | +| `dataset` | Each source module | Extraction pipelines and transformations | +| `dataModelVersion` | Each source module | Transformation view references | +| `dataModelVariant` | `cdf_ingestion_foundation` | Workflow task selection (ISA or CFIHOS ctx snippets) | +| `populateSysTagsFound` | Per source module | Source system transformations; `false` to omit the field | +| `sapPlant` / `sapPlants` | `cdf_sap_foundation` | SAP extractor config and transformation UNION logic | + +> **Note on variable defaults**: Default values in `default.config.yaml` must be concrete strings — not variable references (e.g. `location: oslo`, not computed cross-references). The `{{location}}` substitution is applied in resource YAML files by the toolkit, not within `default.config.yaml` itself. Verify chained variable resolution behaviour against the minimum supported toolkit version before using cross-variable defaults. --- ## Resource Summary - -| Module | Status | Spaces | Datasets | RAW DBs | RAW Tables | Transformations | Workflows | Pipelines | Groups | -| ------------------------------------- | -------- | ------ | -------- | ------- | ---------- | --------------- | --------- | --------- | ------ | -| `foundation/cdf_foundation` | New | 2 | 2 | 1 | 0 | 0 | 0 | 0 | 4 | -| `models/isa_manufacturing_extension` | Existing | — | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -| `sourcesystem/cdf_pi_foundation` | New | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | -| `sourcesystem/cdf_opcua_foundation` | New | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | -| `sourcesystem/cdf_sap_foundation` | New | 0 | 0 | 1 | 7 | 6 | 0 | 1 | 0 | -| `foundation/cdf_ingestion_foundation` | New | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | -| `cdf_file_annotation` | Existing | 0 | 1 | 6 | 6 | 0 | 1 | 1 | 0 | -| `cdf_entity_matching` | Existing | 0 | 0 | 0 | 5 | 0 | 1 | 1 | 0 | -| `cdf_connection_sql` | Existing | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | -| `cdf_search` | Existing | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -| `dashboards/context_quality` | Existing | 0 | 1 | 1 | — | — | 1 | 0 | 0 | -| **Total (new modules only)** | | **5** | **2** | **4** | **9** | **8** | **1** | **3** | **5** | - +| Module | Status | Datasets | RAW DBs | Transformations | Workflows | Pipelines | Groups | +|---|---|---|---|---|---|---|---| +| `models/isa_manufacturing_extension` | Existing | — | — | — | — | — | — | +| `models/cfihos_oil_and_gas_extension` | Existing | — | — | — | — | — | — | +| `sourcesystem/cdf_pi_foundation` | New | 1 | 0 | 1 | 0 | 1 | 0 | +| `sourcesystem/cdf_opcua_foundation` | New | 1 | 0 | 1 | 0 | 1 | 0 | +| `sourcesystem/cdf_sap_foundation` | New | 1 | 1 | 6 | 0 | 1 | 0 | +| `sourcesystem/cdf_db_foundation` | New | 1 | 1 | 0 | 0 | 1 | 0 | +| `sourcesystem/cdf_files_foundation` | New | 1 | 0 | 0 | 0 | 1 | 0 | +| `foundation/cdf_ingestion_foundation` | New | 0 | 0 | 0 | 1 | 0 | 2 | +| `cdf_file_annotation` | Existing | 1 | 6 | 0 | 1 | 1 | 0 | +| `cdf_entity_matching` | Existing | 0 | 0 | 0 | 1 | 1 | 0 | +| `tools/apps/qualitizer` | Existing | 0 | 0 | 0 | 0 | 0 | 0 | +| **Total (new modules only)** | | **5** | **2** | **8** | **1** | **5** | **2** | --- @@ -853,52 +658,48 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml **Goal**: A DE can deploy a complete, real industrial CDF project from scratch using this DP — source system extraction, data model, orchestration, and contextualization — without consulting gss-knowledge-base or assembling boilerplate manually. +| Deliverable | Modules | +|---|---| +| ISA Manufacturing Extension data model | `models/isa_manufacturing_extension` | +| CFIHOS Oil & Gas data model (alternative) | `models/cfihos_oil_and_gas_extension` | +| PI timeseries ingestion (direct write) | `sourcesystem/cdf_pi_foundation` | +| OPC-UA timeseries ingestion (direct write) | `sourcesystem/cdf_opcua_foundation` | +| SAP asset + maintenance ingestion (RAW → DM) | `sourcesystem/cdf_sap_foundation` | +| DB extractor ingestion | `sourcesystem/cdf_db_foundation` | +| File/document ingestion | `sourcesystem/cdf_files_foundation` | +| Modular ingestion orchestration | `foundation/cdf_ingestion_foundation` | +| P&ID file annotation | `accelerators/contextualization/cdf_file_annotation` | +| Entity matching | `accelerators/contextualization/cdf_entity_matching` | +| Data quality tooling | `tools/apps/qualitizer` | -| Deliverable | Modules | -| ----------------------------------- | ----------------------------------------------------------------- | -| Core project infrastructure | `foundation/cdf_foundation` | -| ISA Manufacturing Extension data model | `models/isa_manufacturing_extension` *(new)* | -| PI timeseries ingestion | `sourcesystem/cdf_pi_foundation` | -| OPC-UA timeseries ingestion | `sourcesystem/cdf_opcua_foundation` | -| SAP asset + maintenance ingestion | `sourcesystem/cdf_sap_foundation` | -| Modular ingestion orchestration | `foundation/cdf_ingestion_foundation` | -| P&ID file annotation | `accelerators/contextualization/cdf_file_annotation` *(existing)* | -| Entity matching | `accelerators/contextualization/cdf_entity_matching` *(existing)* | -| ISA-specific relationship transforms | Part of `models/isa_manufacturing_extension` or `foundation/cdf_ingestion_foundation` ctx snippets | -| Contextualization quality dashboard | `dashboards/context_quality` *(existing)* | -| Scoped search filters | `accelerators/industrial_tools/cdf_search` *(existing)* | - - -### P1 — v2: Quality, Testing, and Usability -**Goal**: Deployments are verifiable and easier to configure. A DE can confirm that transformations produce correct output before handing a project to a customer, and new users can be guided through setup without reading documentation. +### P1 — v2: Hardening, Security, and Usability +**Goal**: The v1 DP is hardened for production: security posture is tightened, feedback from first-wave deployments is incorporated, transformation scaffolds are testable, and new users can be guided through setup without reading documentation. | Deliverable | Notes | |---|---| -| **CLI configuration wizard** | Interactive `cdf init` style wizard that guides users through auth setup, source system selection, and initial variable population — reduces time-to-first-deploy for new DEs | +| **Security hardening** | Review and tighten group ACL scopes; add per-resource scope options; document least-privilege patterns for each persona; add secret rotation guidance | +| **Feedback-driven improvements** | Incorporate feedback from first v1 deployments: naming adjustments, config ergonomics, extractor config corrections, README gaps | +| **Transformation unit test framework** | Test harness that validates SQL transformation output against known-good fixtures; enables DEs to verify scaffolds before handover | +| **Improved usability** | Improve `default.config.yaml` inline documentation; add validation helpers; reduce time-to-first-deploy | +| **CLI configuration wizard** | Interactive `cdf init` style wizard that guides users through auth setup, source system selection, and initial variable population | | **Module dependency auto-resolution** | When a package depends on another, automatically resolve and prompt the user to include it (toolkit-level enhancement) | -| `qs_enterprise_dm` data model support | Add `models/qs_enterprise_dm` as an alternative selectable DM; wire in `cdf_connection_sql` contextualization tasks for the `qs_enterprise` variant in `cdf_ingestion_foundation` | -| `rmdm` data model support | Add `models/rmdm_v1` as a selectable DM variant with its own contextualization task snippets | -| SQL-based connections (`cdf_connection_sql`) | Becomes available as the contextualization layer when `dataModelVariant: qs_enterprise` is selected | -| Transformation unit test framework | Test harness that validates SQL transformation output against known-good fixtures | -| Document source module (`cdf_documents_foundation`) | Generic file ingestion replacing the SharePoint-specific module | -| Multi-plant SAP validation | Verified multi-plant expansion via `sapPlants` list variable | +| **Multi-plant SAP validation** | Verified multi-plant expansion via `sapPlants` list variable | +| **CFIHOS ctx task validation** | End-to-end validation of CFIHOS relationship task snippets in the ingestion workflow | ### P2 — v3: AI, Extended Source Systems, and Operational Tooling -**Goal**: The foundation DP becomes the entry point for AI-augmented industrial workflows, a broader set of source systems, and richer operational visibility for DEs and customers post-deployment. +**Goal**: The foundation DP becomes the entry point for AI-augmented industrial workflows, a broader set of source systems, and richer operational visibility. | Deliverable | Module | Notes | |---|---|---| | Atlas AI integration | `dp:atlas_ai` | OOTB agents layered on top of the foundation data model | | Additional source systems | `sourcesystem/cdf__foundation` | Maximo, Meridium, or other CMMS | -| PI Asset Framework (AF) support | `sourcesystem/cdf_pi_af_foundation` | Hierarchy ingestion from PI AF as an extension to `cdf_pi_foundation` | -| Project health dashboard | `dashboards/project_health` | Operational visibility: extraction pipeline uptime, transformation error rates, extraction run status. Already exists in the library — inclusion requires verifying it works independently of the quickstart modules it was originally shipped with. Adds to Layer 5 alongside `dashboards/context_quality`. | -| Qualitizer app | `tools/apps/qualitizer` | Interactive data quality tool for DEs and customers to inspect and act on quality issues across assets, timeseries, and files. Complements the passive quality metrics in `context_quality` with actionable, record-level review. Adds to Layer 5. | -| Automated quality assertions | *(new module)* | Scheduled transformation-based checks (null rates, referential integrity, coverage thresholds) that go beyond contextualization coverage metrics | - +| PI Asset Framework (AF) support | `sourcesystem/cdf_pi_af_foundation` | Hierarchy ingestion from PI AF | +| Project health dashboard | `dashboards/project_health` | Extraction pipeline uptime, transformation error rates | +| Automated quality assertions | *(new module)* | Scheduled transformation-based checks (null rates, referential integrity, coverage thresholds) | --- @@ -906,28 +707,24 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml ### Team and Repository Dependencies - -| Dependency | Risk | Mitigation | -| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `**library` repo** (this repo) | All new modules land here; merge conflicts if other teams are actively developing in `modules/` | Coordinate with module owners; use feature branches per module | -| `**gss-knowledge-base` repo** | Extractor config templates are sourced from here; changes there may need to be reflected in the DP | Pin to a specific commit or tag at release time; document the source commit in module READMEs | -| **`isa_manufacturing_extension` schema evolution** | The existing module may receive view or property changes in future library releases. Any such change will break the foundation source system transformations without a coordinated update | Pin the `dataModelVersion` variable to the version used at build time. Reference all view IDs and spaces via `{{schemaSpace}}` and `{{dataModelVersion}}` variables — a version bump stays a config change, not a code change. Read the existing module's `module.toml` before authoring any transformation SQL. | -| **CDF Toolkit version** | Module YAML syntax, WorkflowVersion schema, and variable substitution behaviour are Toolkit-version-dependent. A Toolkit major version bump may require YAML updates | Document the minimum supported Toolkit version in `module.toml`; test against the pinned version in CI | -| **CDF Workflows API** | The ingestion workflow uses the Workflows API (GA). Behaviour changes to `concurrencyPolicy`, `onFailure`, or task types would require workflow YAML updates | Monitor CDF release notes; the two-phase task graph is relatively simple and low-risk | - +| Dependency | Risk | Mitigation | +|---|---|---| +| `library` repo | All new modules land here; merge conflicts if other teams are actively developing in `modules/` | Coordinate with module owners; use feature branches per module | +| `gss-knowledge-base` repo | Extractor config templates sourced from here; changes there may need to be reflected in the DP | Document the source commit/tag in module READMEs; re-sync on major extractor version bumps | +| **`isa_manufacturing_extension` / `cfihos_oil_and_gas_extension` schema evolution** | View or property changes will break source system transformations without a coordinated update | Pin `dataModelVersion` variable; reference all view IDs and spaces via variables — a version bump stays a config change | +| **CDF Toolkit version** | Module YAML syntax and variable substitution are Toolkit-version-dependent | Document minimum supported Toolkit version in `module.toml`; test in CI | +| **CDF Workflows API** | Behaviour changes to `concurrencyPolicy`, `onFailure`, or task types would require workflow YAML updates | Monitor CDF release notes; the two-phase task graph is simple and low-risk | ### Known Technical Risks - -| Risk | Likelihood | Impact | Mitigation | -| ------------------------------------------------------ | ---------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **PI extractor config drift across PI versions** | Medium | Medium | The PI .NET Extractor config schema changes between major versions (e.g., v2.x → v3.x renamed several keys). The config template must document which extractor version it targets; field engineers must verify compatibility before deploying against older PI servers. | -| **SAP OData endpoint variability** | Medium | High | SAP NW Gateway services and entity names differ between SAP versions and customer configurations. The extractor config template provides the common entity set (equipment, functional locations, work orders) but customers may need to adjust service names and key fields for their specific SAP landscape. | -| **OPC-UA node filter requirements** | High | Low | OPC-UA node structure is highly site-specific. The extractor config template ships with commented-out example filters. Without correct filters, the extractor will browse the full OPC-UA server tree, which may be very large and slow. DEs must configure filters before production use — this should be explicitly documented. | -| `**cdf_foundation` vs `cdf_common` variable conflict** | Low | High | If an existing module is deployed with `cdf_common` and then `cdf_foundation` is introduced in the same project, and the variable values differ (e.g., different `instanceSpace` defaults), resources may be duplicated or point to the wrong space. The two modules should not be deployed together in the same project. | -| **Workflow generation script correctness** | Low | Medium | The `build_workflow.py` script must correctly wire `dependsOn` chains when only a subset of sources is enabled (e.g. if SAP is disabled, tasks that depend on SAP transformations must not reference them). The script should validate dependency integrity at generation time and fail loudly on inconsistencies. CI `--check` flag prevents drift between config and committed YAML. | -| **Transformation generalization limits** | High | Medium | Transformation SQL scaffolds are generalized examples, not universally valid production SQL. Site-specific column names, SAP entity keys, PI tag formats, and OPC-UA node structures will require DE customisation. The cursor rules (`.cursor/rules/cdf-transformations.mdc`) guide AI-assisted adaptation, but DEs must validate output against real source data before handing over to customers. | - +| Risk | Likelihood | Impact | Mitigation | +|---|---|---|---| +| **PI extractor config drift across PI versions** | Medium | Medium | Document which extractor version the template targets; field engineers verify compatibility before deploying | +| **SAP OData endpoint variability** | Medium | High | Template documents common entity sets; customers adjust service names and field names for their SAP landscape | +| **OPC-UA node filter requirements** | High | Low | Config template ships with commented-out example filters; documented as required before production use | +| **Transformation generalization limits** | High | Medium | SQL scaffolds are generalized examples. Cursor rules (`.cursor/rules/cdf-transformations.mdc`) guide AI-assisted adaptation, but DEs must validate against real source data before handover | +| **Workflow generation script correctness** | Low | Medium | `build_workflow.py` validates `dependsOn` integrity at generation time; CI `--check` flag prevents drift between config and committed YAML | +| **PI/OPC-UA direct-write DM enrichment timing** | Low | Medium | Transformation enriching DM instances from CDF TimeSeries must run after extractors have written timeseries. Workflow ordering ensures this via `dependsOn` | --- @@ -935,58 +732,31 @@ Variables are defined once — in `foundation/cdf_foundation/default.config.yaml ### Q1 — Optional source system tasks in the ingestion workflow *(resolved)* -**Decision**: Build-time YAML generation via `scripts/build_workflow.py`, following the pattern established in the library by `accelerators/key_extraction_aliasing` (PR #220). - -A Python script reads `enabledSources` flags from `default.config.yaml`, assembles only the relevant per-task snippets from `workflow_template/tasks/`, and writes the final `WorkflowVersion.yaml` before `cdf deploy` runs. The generated file is committed to the repo. CDF only ever sees a static YAML that references transformations that are actually deployed. - -This also resolves the DM-variant contextualization task selection: `dataModelVariant: isa_manufacturing_extension` (v1 default) pulls in ISA-specific relationship task snippets; `dataModelVariant: qs_enterprise` (P1) pulls in `cdf_connection_sql` snippets. The workflow YAML structure is identical — only the task set differs. - -A `--check` flag on the script validates in CI that the committed YAML matches what the current config would generate, preventing drift. - -See the `cdf_ingestion_foundation` module spec (section 6) for full design details. - ---- - -### Q2 — `cdf_sap_foundation`: merged module vs separate assets and events *(decided, documenting trade-off)* - -**Decision**: Merge `cdf_sap_assets` and `cdf_sap_events` concerns into a single `cdf_sap_foundation` module. - -**Trade-off**: +**Decision**: Build-time YAML generation via `scripts/build_workflow.py`. Script reads `enabledSources` flags and DM variant, assembles relevant task snippets, validates `dependsOn` references, and writes `wf_ingestion_v1.WorkflowVersion.yaml`. CI `--check` flag prevents drift. +### Q2 — `cdf_sap_foundation`: merged vs split module *(resolved)* -| | Merged (`cdf_sap_foundation`) | Split (`cdf_sap_assets_foundation` + `cdf_sap_events_foundation`) | -| ------------------------ | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | -| **Extractor config** | One extractor config, one extraction pipeline — SAP OData targets all entity types | Two configs — possible if different schedules or auth are needed per entity group | -| **Deployment atomicity** | Deploy SAP as one unit — assets and events always go together | Can deploy asset hierarchy without maintenance data (useful in early-stage projects) | -| **Module count** | Simpler; fewer modules to manage | More granular control | -| **Auth** | Single service account for all SAP entities | Could scope credentials separately per entity group | +**Decision**: Single merged module. In practice, assets and maintenance orders are always needed together for meaningful contextualization; the SAP OData extractor uses a single NW Gateway connection. +### Q3 — `cdf_file_annotation` variable compatibility *(verify before v1)* -The merged approach is preferred because: (a) in practice, assets and maintenance orders are always needed together for meaningful contextualization; (b) the SAP OData extractor is typically configured with a single connection to the NW Gateway covering all entity types; (c) fewer modules reduces cognitive overhead for field engineers. If a customer needs to separate schedules, they can configure per-endpoint cron expressions within the single extractor config. - ---- - -### Q3 — `cdf_file_annotation` dependency on `cdf_common` *(verify before v1)* - -`cdf_file_annotation` was written against the `cdf_common` variable contract. Verify that `cdf_foundation`'s variable defaults (particularly `functionSpace: {{location}}_functions`) are compatible with the values `cdf_file_annotation` expects. If `cdf_file_annotation`'s `module.toml` declares a hard dependency on `cdf_common`, a compatibility shim or a `module.toml` update in `cdf_file_annotation` may be needed. - ---- +`cdf_file_annotation` was written against the `cdf_common` variable contract. Verify that the variable names it expects (`instanceSpace`, `functionSpace`, `dataset`) are populated correctly by the deployment's variable file when deploying alongside the foundation source system modules. No structural dependency on `cdf_common` should be assumed. ### Q4 — Minimum supported CDF Toolkit version *(must document before v1)* -The WorkflowVersion YAML schema and variable substitution syntax are Toolkit-version-dependent. The minimum Toolkit version that supports all resource types used in this DP (Workflows, WorkflowTrigger, ExtractionPipeline Config, Space, etc.) must be identified and pinned in each module's `module.toml`. This is a blocking prerequisite for CI validation. - ---- +The minimum Toolkit version that supports all resource types used in this DP must be identified and pinned in each module's `module.toml`. ### Q5 — Transformation scaffold validation approach *(open)* -Since transformations are generalized scaffolds rather than universally valid SQL, we need a clear approach for how DEs validate them before going live: +- **Option A**: Manual validation checklist — DE runs transformation in preview mode against real RAW data +- **Option B**: Transformation unit test framework (P1) with known-good RAW fixtures +- **Option C**: Validation notebook that runs scaffolds against sample data and reports mismatches -- **Option A**: Document a manual validation checklist — DE runs the transformation in preview mode against a sample of real RAW data and checks output. -- **Option B**: Ship a transformation unit test framework (P1) with known-good RAW fixtures and expected DM output, runnable locally. -- **Option C**: Provide a validation Streamlit app or notebook that runs the scaffolds against sample data and reports mismatches. +Decision needed before P1. -A decision is needed before P1 — the cursor rules alone are not sufficient as a quality gate for customer-facing deployments. +### Q6 — CFIHOS ctx task snippets for the ingestion workflow *(open)* + +The CFIHOS Oil & Gas DM relationship transformations (tag-to-document, tag-to-equipment) need to be authored and validated as task snippets for `cdf_ingestion_foundation`. This is a v1 blocker if CFIHOS DM support is required at launch. --- @@ -999,18 +769,17 @@ A decision is needed before P1 — the cursor rules alone are not sufficient as ### Deployment health (binary checks) - `dp:foundation` deploys cleanly to a brand-new CDF project with no prior resources and no errors. -- Each source system module (`cdf_pi_foundation`, `cdf_opcua_foundation`, `cdf_sap_foundation`) deploys independently when the others are absent. -- All transformation SQL and resource external IDs contain zero hardcoded site names or space identifiers — every location-specific value is a template variable. -- Existing contextualization modules (`cdf_file_annotation`, `cdf_entity_matching`, `cdf_connection_sql`) deploy alongside the new foundation modules with no changes to their files. +- Each source system module (`cdf_pi_foundation`, `cdf_opcua_foundation`, `cdf_sap_foundation`, `cdf_db_foundation`, `cdf_files_foundation`) deploys independently when the others are absent. +- All resource external IDs contain zero hardcoded site names or space identifiers — every location-specific value is a template variable. +- Existing contextualization modules (`cdf_file_annotation`, `cdf_entity_matching`) deploy alongside the new foundation modules with no changes to their files. ### Field engineer experience (outcome-based) -- **Extractor readiness**: A field engineer with CDF credentials and source system credentials can configure and run the PI, OPC-UA, or SAP extractor using only the config template shipped in the module — without consulting gss-knowledge-base or requesting help from another team member. -- **Time to first data in CDF**: A DE starting from a blank, provisioned CDF project can have timeseries and asset data flowing into the data model within **one working day** of deploying `dp:foundation` with a single source system if access to source systems is provided. -- **Time to end-to-end deployment**: A DE deploying all three source systems (PI + OPC-UA + SAP) plus contextualization of 10-50 PIDs on a new customer project can complete the deployment within **two working days**. +- **Extractor readiness**: A field engineer with CDF credentials and source system credentials can configure and run the PI, OPC-UA, or SAP extractor using only the config template shipped in the module — without consulting gss-knowledge-base or requesting help. +- **Time to first data in CDF**: A DE starting from a blank, provisioned CDF project can have timeseries and asset data flowing into the data model within **one working day** of deploying `dp:foundation` with a single source system. +- **Time to end-to-end deployment**: A DE deploying all source systems plus contextualization can complete the deployment within **two working days**. ### Scalability (structural checks) -- Adding a fourth source system to an existing deployment requires: (a) deploying one new module and (b) updating one variable in `cdf_ingestion_foundation/default.config.yaml` — no existing module files are modified. -- Deploying the same DP to a second site (different `location` value) requires only a new variable file — all module YAML is reused as-is. - +- Adding a new source system requires: (a) deploying one new module and (b) updating one variable in `cdf_ingestion_foundation/default.config.yaml` — no existing module files are modified. +- Deploying the same DP to a second site (different `location`) requires only a new variable file — all module YAML is reused as-is. From c4ab7c3ab969095977dbbd9c8b809d3354ae1f98 Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Fri, 15 May 2026 10:56:24 +0200 Subject: [PATCH 10/18] minor changes in PRD --- PRD.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/PRD.md b/PRD.md index d186fce9..028c1767 100644 --- a/PRD.md +++ b/PRD.md @@ -698,8 +698,6 @@ Each module defines its own `default.config.yaml`. The following variables appea | Atlas AI integration | `dp:atlas_ai` | OOTB agents layered on top of the foundation data model | | Additional source systems | `sourcesystem/cdf__foundation` | Maximo, Meridium, or other CMMS | | PI Asset Framework (AF) support | `sourcesystem/cdf_pi_af_foundation` | Hierarchy ingestion from PI AF | -| Project health dashboard | `dashboards/project_health` | Extraction pipeline uptime, transformation error rates | -| Automated quality assertions | *(new module)* | Scheduled transformation-based checks (null rates, referential integrity, coverage thresholds) | --- From 5978d62078e0ae55dc955e5ad32203cf312f3c64 Mon Sep 17 00:00:00 2001 From: Jan Inge Bergseth <31886431+BergsethCognite@users.noreply.github.com> Date: Fri, 15 May 2026 14:46:29 +0200 Subject: [PATCH 11/18] cleand up PI & OPCUA --- .../raw/db_opcua.Database.yaml | 2 +- .../tr_opcua_timeseries.Transformation.sql | 50 +++++++++++++++++++ .../tr_opcua_timeseries.Transformation.yaml | 14 ++++++ 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql create mode 100644 modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml diff --git a/modules/sourcesystem/cdf_opcua_foundation/raw/db_opcua.Database.yaml b/modules/sourcesystem/cdf_opcua_foundation/raw/db_opcua.Database.yaml index 3ba2f359..c13335eb 100644 --- a/modules/sourcesystem/cdf_opcua_foundation/raw/db_opcua.Database.yaml +++ b/modules/sourcesystem/cdf_opcua_foundation/raw/db_opcua.Database.yaml @@ -1 +1 @@ -dbName: "{{raw_db_name_prefix}}_opcua_site1" +dbName: "db_{{location}}_opcua" diff --git a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql new file mode 100644 index 00000000..c8eed049 --- /dev/null +++ b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql @@ -0,0 +1,50 @@ +-- Transformation: OPC-UA node metadata → ISATimeSeries DM instances +-- Target view : ISATimeSeries (space: {{schemaSpace}}, version: {{dataModelVersion}}) +-- Source RAW : db_{{location}}_opcua.nodes +-- +-- SCAFFOLD — column names reflect the default OPC-UA Extractor RAW schema when +-- store-raw-metadata: true is set. OPC-UA node structure is highly site-specific; +-- verify column names against your actual RAW table before running in production. +-- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. +-- +-- Default OPC-UA Extractor RAW columns (verify for your extractor version): +-- Id — OPC-UA node ID string (e.g. "ns=2;s=Temperature.Tag1") +-- DisplayName — Human-readable node name +-- Description — Node description (may be empty) +-- DataType — OPC-UA data type (e.g. "Double", "Float", "Int32") +-- NodeClass — "Variable" for measurement nodes + +SELECT + -- Identity: use the extractor-assigned externalId (id-prefix + node id) + concat('{{opcuaIdPrefix}}', Id) AS externalId, + '{{instanceSpace}}' AS space, + + -- Core metadata + DisplayName AS name, + Description AS description, + + -- Map OPC-UA DataType to CDF timeseries type + case + when lower(DataType) in ('boolean') then 'string' + when lower(DataType) in ('string', 'localizedtext') then 'string' + else 'numeric' + end AS type, + false AS isStep, + + -- Source context label + 'OPC-UA' AS sourceContext, + + -- sysTagsFound: array of candidate tag identifiers for downstream SQL contextualization. + -- The pattern below extracts the last segment of the OPC-UA display name, which often + -- corresponds to a functional location or equipment tag. Adapt to your site's node naming. + -- Set populateSysTagsFound: false in default.config.yaml to omit this field entirely. + case + when '{{populateSysTagsFound}}' = 'true' + then array( + regexp_extract(DisplayName, '[^._\\-]+$', 0) -- last segment after '.', '_', or '-' + ) + else array() + end AS sysTagsFound + +FROM `db_{{location}}_opcua`.`nodes` +WHERE NodeClass = 'Variable' -- only ingest measurement nodes, not object/folder nodes diff --git a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml new file mode 100644 index 00000000..7efac67b --- /dev/null +++ b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml @@ -0,0 +1,14 @@ +externalId: "tr_{{location}}_opcua_timeseries" +name: "tr:{{location}}:opcua:timeseries" +dataSetExternalId: "{{dataset}}" +destination: + type: instances + dataModel: + space: "{{schemaSpace}}" + externalId: ISATimeSeries + version: "{{dataModelVersion}}" + destinationType: ISATimeSeries + instanceSpace: "{{instanceSpace}}" +ignoreNullFields: true +isPublic: true +conflictMode: upsert From 400ac194000c444024d21a9e8fab35ad4f26bf6d Mon Sep 17 00:00:00 2001 From: Jan Inge Bergseth <31886431+BergsethCognite@users.noreply.github.com> Date: Fri, 15 May 2026 15:26:18 +0200 Subject: [PATCH 12/18] more cleanup & added sap --- .../sourcesystem/cdf_sap_foundation/raw/equipment.Table.yaml | 2 -- .../cdf_sap_foundation/raw/functional_location.Table.yaml | 2 -- .../cdf_sap_foundation/raw/state_store.Table.yaml | 4 ---- .../sourcesystem/cdf_sap_foundation/raw/workitem.Table.yaml | 2 -- .../sourcesystem/cdf_sap_foundation/raw/workorder.Table.yaml | 2 -- .../cdf_sap_foundation/raw/workpackage.Table.yaml | 2 -- .../sourcesystem/cdf_sap_foundation/raw/worktask.Table.yaml | 2 -- 7 files changed, 16 deletions(-) delete mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/equipment.Table.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/functional_location.Table.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/state_store.Table.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/workitem.Table.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/workorder.Table.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/workpackage.Table.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/worktask.Table.yaml diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/equipment.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/equipment.Table.yaml deleted file mode 100644 index 0cab110e..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/raw/equipment.Table.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dbName: "db_{{location}}_sap" -tableName: equipment diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/functional_location.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/functional_location.Table.yaml deleted file mode 100644 index ff5c7df1..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/raw/functional_location.Table.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dbName: "db_{{location}}_sap" -tableName: functional_location diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/state_store.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/state_store.Table.yaml deleted file mode 100644 index 6877acda..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/raw/state_store.Table.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Extractor state checkpoints — managed by the SAP OData Extractor. -# Do not write to this table from transformations or external clients. -dbName: "db_{{location}}_sap" -tableName: state_store diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/workitem.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/workitem.Table.yaml deleted file mode 100644 index 162e3220..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/raw/workitem.Table.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dbName: "db_{{location}}_sap" -tableName: workitem diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/workorder.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/workorder.Table.yaml deleted file mode 100644 index cc047bbd..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/raw/workorder.Table.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dbName: "db_{{location}}_sap" -tableName: workorder diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/workpackage.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/workpackage.Table.yaml deleted file mode 100644 index 50553fc7..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/raw/workpackage.Table.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dbName: "db_{{location}}_sap" -tableName: workpackage diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/worktask.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/worktask.Table.yaml deleted file mode 100644 index 6c04eed1..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/raw/worktask.Table.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dbName: "db_{{location}}_sap" -tableName: worktask From 7dbebf3b538485b006e1294bd61cbbcfeae7422d Mon Sep 17 00:00:00 2001 From: Jan Inge Bergseth <31886431+BergsethCognite@users.noreply.github.com> Date: Tue, 19 May 2026 11:54:42 +0200 Subject: [PATCH 13/18] more cleanup and alignments --- .../notebook.cdf_query_example.Group.yaml | 26 + .../tools/notebooks/cdf_queries/module.toml | 5 + .../cdf_queries/notebooks/queries.ipynb | 18213 ++++++++++++++++ 3 files changed, 18244 insertions(+) create mode 100644 modules/tools/notebooks/cdf_queries/auth/notebook.cdf_query_example.Group.yaml create mode 100644 modules/tools/notebooks/cdf_queries/module.toml create mode 100644 modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb diff --git a/modules/tools/notebooks/cdf_queries/auth/notebook.cdf_query_example.Group.yaml b/modules/tools/notebooks/cdf_queries/auth/notebook.cdf_query_example.Group.yaml new file mode 100644 index 00000000..e2e37473 --- /dev/null +++ b/modules/tools/notebooks/cdf_queries/auth/notebook.cdf_query_example.Group.yaml @@ -0,0 +1,26 @@ +# This role is used for the processing of asset data, creating an asset hierarchy +name: 'gp_notebook.cdf_query_example.Group' +sourceId: +metadata: + origin: 'cdf-project-templates' +capabilities: + - dataModelsAcl: + actions: + - WRITE + scope: + all: {} + - dataModelInstancesAcl: + actions: + - READ + scope: + all: {} + - timeSeriesAcl: + actions: + - READ + scope: + all: {} + - filesAcl: + actions: + - READ + scope: + all: {} diff --git a/modules/tools/notebooks/cdf_queries/module.toml b/modules/tools/notebooks/cdf_queries/module.toml new file mode 100644 index 00000000..2c700c74 --- /dev/null +++ b/modules/tools/notebooks/cdf_queries/module.toml @@ -0,0 +1,5 @@ +[module] +title = "CDF Query examples" +id = "Query Example Notebook" +package_id = "tool" + diff --git a/modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb b/modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb new file mode 100644 index 00000000..1374a76f --- /dev/null +++ b/modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb @@ -0,0 +1,18213 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "19587b30", + "metadata": {}, + "source": [ + "# Queries\n", + "This notebook contains a set of DMS query examples that can be used as templates." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "85f0feb4", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "import time\n", + "from collections import defaultdict\n", + "from pathlib import Path\n", + "\n", + "from dotenv import load_dotenv\n", + "\n", + "from cognite.client import CogniteClient, global_config\n", + "from cognite.client.config import ClientConfig\n", + "from cognite.client.credentials import OAuthClientCredentials\n", + "from cognite.client.data_classes.data_modeling import (\n", + " EdgeListWithCursor,\n", + " InstanceSort,\n", + " NodeId,\n", + " NodeListWithCursor,\n", + " ViewId,\n", + ")\n", + "from cognite.client.data_classes.data_modeling.query import (\n", + " NodeResultSetExpression,\n", + " Query,\n", + " QueryResult,\n", + " Select,\n", + " SourceSelector,\n", + ")\n", + "from cognite.client.data_classes.filters import (\n", + " And,\n", + " ContainsAll,\n", + " Equals,\n", + " HasData,\n", + " Nested,\n", + " Prefix,\n", + " SpaceFilter,\n", + ")\n", + "from cognite.client.exceptions import CogniteAPIError\n", + "from tenacity import (\n", + " retry,\n", + " retry_if_exception,\n", + " stop_after_attempt,\n", + " wait_exponential_jitter,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "8ea0065b", + "metadata": {}, + "source": [ + "## Basic setup" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8655ee9b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading credentials from C:\\Users\\JanIngeBergseth\\OneDrive - Cognite AS\\Documents\\GitHub\\library\\.env\n", + "Client configured with alpha features enabled and SDK retries tuned (max_retries=10).\n" + ] + } + ], + "source": [ + "# Locate the .env file by walking up from the current working directory until we find one.\n", + "# Notebooks set cwd to wherever Jupyter was launched, so a fixed `parents[N]` is fragile.\n", + "def _find_env_file(start: Path | None = None) -> Path | None:\n", + " start = (start or Path.cwd()).resolve()\n", + " for candidate in [start, *start.parents]:\n", + " env_path = candidate / \".env\"\n", + " if env_path.is_file():\n", + " return env_path\n", + " return None\n", + "\n", + "\n", + "env_file = _find_env_file()\n", + "if env_file is None:\n", + " raise FileNotFoundError(\n", + " \"Could not find a .env file by walking up from cwd. \"\n", + " \"Place a .env at the repo root or set the CDF_* / IDP_* env vars in your shell.\"\n", + " )\n", + "print(f\"Loading credentials from {env_file}\")\n", + "load_dotenv(env_file, override=False)\n", + "\n", + "project = os.getenv(\"CDF_PROJECT\")\n", + "cluster = os.getenv(\"CDF_CLUSTER\")\n", + "client_id = os.getenv(\"CDF_CLIENT_ID\") or os.getenv(\"IDP_CLIENT_ID\")\n", + "client_secret = os.getenv(\"CDF_CLIENT_SECRET\") or os.getenv(\"IDP_CLIENT_SECRET\")\n", + "tenant_id = os.getenv(\"CDF_TENANT_ID\") or os.getenv(\"IDP_TENANT_ID\")\n", + "base_url = os.getenv(\"CDF_BASE_URL\") or os.getenv(\"CDF_URL\") or (f\"https://{cluster}.cognitedata.com\" if cluster else None)\n", + "\n", + "missing = [\n", + " name for name, val in {\n", + " \"CDF_PROJECT\": project,\n", + " \"CDF_CLIENT_ID / IDP_CLIENT_ID\": client_id,\n", + " \"CDF_CLIENT_SECRET / IDP_CLIENT_SECRET\": client_secret,\n", + " \"CDF_TENANT_ID / IDP_TENANT_ID\": tenant_id,\n", + " \"CDF_BASE_URL / CDF_URL / CDF_CLUSTER\": base_url,\n", + " }.items()\n", + " if not val\n", + "]\n", + "if missing:\n", + " raise RuntimeError(\n", + " f\"Missing required environment variables: {', '.join(missing)}.\\n\"\n", + " f\"Checked .env: {env_file}\\n\"\n", + " \"Make sure these are defined there or exported in your shell.\"\n", + " )\n", + "\n", + "credentials = OAuthClientCredentials(\n", + " token_url=f\"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token\",\n", + " client_id=client_id,\n", + " client_secret=client_secret,\n", + " scopes=[f\"{base_url}/.default\"],\n", + ")\n", + "\n", + "# Increase SDK-level retry budget so transient 429/5xx are handled before they reach user code.\n", + "# The SDK already retries 429 and 5xx with backoff; we just give it more headroom.\n", + "global_config.max_retries = 10\n", + "global_config.max_retry_backoff = 30\n", + "global_config.disable_pypi_version_check = True\n", + "\n", + "client = CogniteClient(ClientConfig(\n", + " client_name=\"cdf-query-examples\",\n", + " project=project,\n", + " credentials=credentials,\n", + " base_url=base_url,\n", + "))\n", + "\n", + "# Merge (don't overwrite) headers so SDK defaults like x-cdp-sdk / User-Agent are preserved.\n", + "# cdf-version: alpha unlocks alpha features on /query (e.g. the \"debug\" envelope used below).\n", + "client.config.headers = {**(client.config.headers or {}), \"cdf-version\": \"alpha\"}\n", + "print(\"Client configured with alpha features enabled and SDK retries tuned (max_retries=10).\")" + ] + }, + { + "cell_type": "markdown", + "id": "0d88508a", + "metadata": {}, + "source": [ + "# Retry helpers (408 / 429 / 5xx)\n", + "\n", + "These wrappers handle the two failure modes you'll hit most often when running DMS queries:\n", + "\n", + "- **408 Request Timeout** — usually caused by oversized payloads (`properties=[\"*\"]`), high `limit`, or expensive joins. The right long-term fix is to narrow the query; the retry only buys time.\n", + "- **429 Too Many Requests** — token-bucket throttling. Exponential backoff with jitter clears it.\n", + "\n", + "The decorator below retries on `{408, 425, 429, 500, 502, 503, 504}` with jittered exponential backoff. The Cognite SDK also retries internally (configured above via `global_config`); these wrappers add a second layer for the user-facing call." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1d29ce18", + "metadata": {}, + "outputs": [], + "source": [ + "RETRYABLE_CODES = {408, 425, 429, 500, 502, 503, 504}\n", + "\n", + "\n", + "def is_retryable_exception(e: BaseException) -> bool:\n", + " \"\"\"Retry on transient transport / throttling errors.\"\"\"\n", + " return isinstance(e, CogniteAPIError) and e.code in RETRYABLE_CODES\n", + "\n", + "\n", + "retry_cognite = retry(\n", + " reraise=True,\n", + " stop=stop_after_attempt(5),\n", + " retry=retry_if_exception(is_retryable_exception),\n", + " wait=wait_exponential_jitter(initial=1, max=30, jitter=2),\n", + ")\n", + "\n", + "\n", + "@retry_cognite\n", + "def run_query(client: CogniteClient, query: Query) -> QueryResult:\n", + " \"\"\"Run a /query against the data model with retry on 408/429/5xx.\"\"\"\n", + " return client.data_modeling.instances.query(query=query)\n", + "\n", + "\n", + "@retry_cognite\n", + "def run_sync(client: CogniteClient, query: Query) -> QueryResult:\n", + " \"\"\"Run a /sync (cursor-based) query with retry on 408/429/5xx.\"\"\"\n", + " return client.data_modeling.instances.sync(query=query)\n", + "\n", + "\n", + "def log_api_error(e: CogniteAPIError) -> None:\n", + " \"\"\"Print enough context to correlate with CDF backend logs.\"\"\"\n", + " print(f\"CogniteAPIError code={e.code} x_request_id={getattr(e, 'x_request_id', None)}: {e.message}\")" + ] + }, + { + "cell_type": "markdown", + "id": "0dd34662", + "metadata": {}, + "source": [ + "# Setup\n", + "\n", + "Define the instance space, the model space, the model version, and all `ViewId`s used by the queries below. Centralising these constants makes it trivial to retarget the notebook at a different deployment." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "949949e1", + "metadata": {}, + "outputs": [], + "source": [ + "# Target model in this project: dm_dom_oil_and_gas : dm_oil_and_gas_domain_model / v1\n", + "# Adjust INST_SP if your instance space differs from the model space.\n", + "INST_SP = \"inst_location\" # instance space\n", + "MODEL_SP_CDM = \"cdf_cdm\" # model space (where views/containers live)\n", + "MODEL_SP_IDM = \"cdf_idm\" # model space (where views/containers live)\n", + "MODEL_VERSION = \"v1\"\n", + "\n", + "# Project views (resolved from `client.data_modeling.views.list(space=MODEL_SP)`).\n", + "# `Tag` is this model's \"asset\" equivalent (functional tag). There is no Activity view -\n", + "# closest analogues are WorkOrder / WorkOrderOperation.\n", + "asset_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteAsset\", version=MODEL_VERSION)\n", + "ts_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteTimeSeries\", version=MODEL_VERSION)\n", + "file_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteFile\", version=MODEL_VERSION)\n", + "eq_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteEquipment\", version=MODEL_VERSION)\n", + "wo_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteMaintenanceOrder\", version=MODEL_VERSION)\n", + "wo_op_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteOperation\", version=MODEL_VERSION)\n", + "notification_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteNotification\", version=MODEL_VERSION)\n" + ] + }, + { + "cell_type": "markdown", + "id": "9f537673", + "metadata": {}, + "source": [ + "Optional sanity check: list all views in the model space." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "9e904032", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "asset_vid -> cdf_cdm:CogniteAsset/v1 (23 properties)\n", + "ts_vid -> cdf_cdm:CogniteTimeSeries/v1 (19 properties)\n", + "file_vid -> cdf_cdm:CogniteFile/v1 (18 properties)\n", + "eq_vid -> cdf_cdm:CogniteEquipment/v1 (18 properties)\n", + "wo_vid -> cdf_idm:CogniteMaintenanceOrder/v1 (24 properties)\n", + "wo_op_vid -> cdf_idm:CogniteOperation/v1 (27 properties)\n", + "notification_vid -> cdf_idm:CogniteNotification/v1 (21 properties)\n" + ] + } + ], + "source": [ + "# Inspect the ViewIds defined in the Setup cell. For each one, retrieve the full\n", + "# view definition from CDF and print its properties so you know what's available\n", + "# for filter / select / sort. Driven by the variables in Setup so renaming a view\n", + "# in one place is enough.\n", + "view_ids = {\n", + " \"asset_vid\": asset_vid,\n", + " \"ts_vid\": ts_vid,\n", + " \"file_vid\": file_vid,\n", + " \"eq_vid\": eq_vid,\n", + " \"wo_vid\": wo_vid,\n", + " \"wo_op_vid\": wo_op_vid,\n", + " \"notification_vid\": notification_vid,\n", + "}\n", + "\n", + "retrieved = client.data_modeling.views.retrieve(list(view_ids.values()))\n", + "retrieved_by_id = {(v.space, v.external_id, v.version): v for v in retrieved}\n", + "\n", + "# Cache property metadata per view for downstream query-design / debugging.\n", + "# Schema: view_properties[var_name] = {prop_name: {\"type\": ..., \"is_list\": bool,\n", + "# \"is_direct_relation\": bool, \"is_reverse_direct_relation\": bool,\n", + "# \"container\": (space, external_id) | None}}\n", + "view_properties: dict[str, dict[str, dict]] = {}\n", + "\n", + "for var_name, vid in view_ids.items():\n", + " view = retrieved_by_id.get((vid.space, vid.external_id, vid.version))\n", + " if view is None:\n", + " print(f\"{var_name} -> {vid.space}:{vid.external_id}/{vid.version} (NOT FOUND)\")\n", + " view_properties[var_name] = {}\n", + " continue\n", + "\n", + " props: dict[str, dict] = {}\n", + " for prop_name, prop in view.properties.items():\n", + " prop_type = getattr(prop, \"type\", None)\n", + " cls_name = prop.__class__.__name__\n", + " container = getattr(prop, \"container\", None)\n", + " props[prop_name] = {\n", + " \"type\": str(prop_type) if prop_type is not None else cls_name,\n", + " \"is_list\": getattr(prop, \"list\", False),\n", + " \"is_direct_relation\": cls_name == \"MappedPropertyApply\" and \"direct\" in str(prop_type).lower()\n", + " or \"direct\" in cls_name.lower(),\n", + " \"is_reverse_direct_relation\": \"ReverseDirectRelation\" in cls_name,\n", + " \"container\": (container.space, container.external_id) if container is not None else None,\n", + " }\n", + " view_properties[var_name] = props\n", + " print(f\"{var_name} -> {vid.space}:{vid.external_id}/{vid.version} ({len(props)} properties)\")\n", + "\n", + "# Quick-access helpers for query design:\n", + "# view_properties[\"asset_vid\"][\"parent\"] -> dict of metadata\n", + "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_direct_relation\"]]\n", + "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_reverse_direct_relation\"]]\n", + "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_list\"]]\n" + ] + }, + { + "cell_type": "markdown", + "id": "b4905a9d", + "metadata": {}, + "source": [ + "# Assets\n", + "## General asset queries" + ] + }, + { + "cell_type": "markdown", + "id": "95db1bc4", + "metadata": {}, + "source": [ + "### List assets and sort based on their externalId\n", + "\n", + "Listing assets works almost the same as in the case of legacy assets. The main difference is the **sources** argument, that allows to choose the properties that will be fetched, by selecting a view (or a list of views).\n", + "\n", + "You can sort/filter either by using a property specified within a View or node/edge registry.\n", + "Sorting by created/updated time is not allowed as of now, due to performance considerations (too much reindexing on every instance update)." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "3ddb499f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Returned 500 Tag instances.\n", + "Spaces seen in this batch: {'inst_location': 500}\n", + "\n", + "Sample Tag: space='inst_location' externalId='f4af554c-57aa-4043-ad2b-263aa9e34485'\n", + "{\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Seawater Lift Pump A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Centrifugal seawater lift pump train A\",\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"sourceId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "# Listing instances through a view. The `sources` argument selects which view's\n", + "# properties get returned; sort/filter can reference any property on that view\n", + "# or the node/edge registry (e.g. (\"node\", \"externalId\")). Sorting on\n", + "# createdTime/lastUpdatedTime is not allowed.\n", + "#\n", + "# We omit `space=` so we discover where Tags actually live, then print the\n", + "# distribution of spaces so you can pin INST_SP correctly. The data\n", + "# (instance) space is usually different from the model space.\n", + "assets = client.data_modeling.instances.list(\n", + " sources=asset_vid,\n", + " limit=500,\n", + " # Equals filter against a single text property on the view.\n", + " filter=Equals(\n", + " property=asset_vid.as_property_ref(\"sourceContext\"),\n", + " value=\"cfihos_test\",\n", + " ),\n", + " sort=InstanceSort(property=[\"node\", \"externalId\"], direction=\"descending\"),\n", + ")\n", + "print(f\"Returned {len(assets)} Tag instances.\")\n", + "\n", + "from collections import Counter\n", + "\n", + "space_counts = Counter(a.space for a in assets)\n", + "print(\"Spaces seen in this batch:\", dict(space_counts))\n", + "if assets:\n", + " sample = assets[0]\n", + " print(f\"\\nSample Tag: space={sample.space!r} externalId={sample.external_id!r}\")\n", + " print(sample)\n", + "\n", + "# Once you know the right instance space, set INST_SP in the Setup cell and add\n", + "# `space=INST_SP` back here:\n", + "# filter=Equals([\"node\", \"space\"], value=INST_SP)\n", + "# ...or filter by a direct relation (note the {space, externalId} value shape):\n", + "# filter=Equals(\n", + "# property=asset_vid.as_property_ref(\"parent\"),\n", + "# value={\"space\": INST_SP, \"externalId\": \"SITE_OSL\"},\n", + "# )" + ] + }, + { + "cell_type": "markdown", + "id": "df281e86", + "metadata": {}, + "source": [ + "# Search endpoint\n", + "\n", + "Search is tokenized full-text lookup (not regex; see the docs for the exact tokenization rules).\n", + "\n", + "This endpoint targets the Elasticsearch backend where *every text property is indexed*, so it is typically more performant than `/query` for keyword-style lookups.\n", + "\n", + "Caveat: search can only match `text`-typed properties." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "69c9c180", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Searching Tag for 'Electrical Distributi' (derived from sample Tag 'Electrical Distribution')\n", + "Hits: 1\n", + "{\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-EL\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Electrical Distribution\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"Power generation and distribution\",\n", + " \"sourceId\": \"VAL-PH-23-EL\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "# Pick a real name from the data first - hardcoded demo values from another\n", + "# project (like \"CNY-AC\") will silently return zero hits.\n", + "sample = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=5)\n", + "if not sample:\n", + " raise RuntimeError(\"No Tag instances exist - ingest data or query a different view.\")\n", + "\n", + "sample_name = None\n", + "for node in sample:\n", + " props = node.properties.get(asset_vid, {})\n", + " if props.get(\"name\"):\n", + " sample_name = props[\"name\"]\n", + " break\n", + "\n", + "# Search by a substring of a real name (drop the last 2 chars to make it a partial match).\n", + "search_term = (sample_name or \"\")[:-2] or sample_name\n", + "print(f\"Searching Tag for {search_term!r} (derived from sample Tag {sample_name!r})\")\n", + "\n", + "results = client.data_modeling.instances.search(\n", + " view=asset_vid,\n", + " space=INST_SP,\n", + " limit=20,\n", + " sort=InstanceSort(property=asset_vid.as_property_ref(\"name\"), direction=\"descending\"),\n", + " query=search_term,\n", + ")\n", + "print(f\"Hits: {len(results)}\")\n", + "for r in results[:5]:\n", + " print(r)" + ] + }, + { + "cell_type": "markdown", + "id": "af98bf8e", + "metadata": {}, + "source": [ + "## Iterative listing\n", + "\n", + "Using instances API you can fetch the instances in batches, to avoid timeouts and reduce memory load" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "ffee642e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sourceContext distribution (top 5): [('cfihos_test', 198), (None, 2)]\n", + "Iterating Tags with sourceContext == 'cfihos_test'\n", + "Fetching batch 1\n", + "500\n", + "Fetching batch 2\n", + "500\n", + "Fetching batch 3\n", + "201\n" + ] + } + ], + "source": [ + "# Stream the full result set in batches. Set limit=None for unbounded iteration\n", + "# (this example caps at 20000 only to keep the demo fast - remove for production use).\n", + "# chunk_size controls page size; 500-1000 is typically a good compromise between\n", + "# round-trip overhead and the 408 risk that comes with huge per-page payloads.\n", + "\n", + "# Pick a real sourceContext value from the data instead of hardcoding one.\n", + "from collections import Counter\n", + "\n", + "probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", + "source_contexts = Counter(\n", + " (node.properties.get(asset_vid, {}) or {}).get(\"sourceContext\")\n", + " for node in probe\n", + ")\n", + "print(\"sourceContext distribution (top 5):\", source_contexts.most_common(5))\n", + "\n", + "source_context_value = next(\n", + " (val for val, _ in source_contexts.most_common() if val), None\n", + ")\n", + "if source_context_value is None:\n", + " print(\"No sourceContext values found - iterating without a filter instead.\")\n", + " extra_filter = None\n", + "else:\n", + " print(f\"Iterating Tags with sourceContext == {source_context_value!r}\")\n", + " extra_filter = Equals(\n", + " property=asset_vid.as_property_ref(\"sourceContext\"),\n", + " value=source_context_value,\n", + " )\n", + "\n", + "for i, assets in enumerate(client.data_modeling.instances(\n", + " chunk_size=500,\n", + " instance_type=\"node\",\n", + " sources=asset_vid,\n", + " space=INST_SP,\n", + " limit=20000,\n", + " sort=InstanceSort(property=[\"node\", \"externalId\"], direction=\"descending\"),\n", + " filter=extra_filter,\n", + ")):\n", + " print(f\"Fetching batch {i + 1}\")\n", + " print(len(assets))" + ] + }, + { + "cell_type": "markdown", + "id": "78a65d04", + "metadata": {}, + "source": [ + "### Fetching assets with the query endpoint\n", + "\n", + "Use `/query` when you need only a specific subset of properties of the retrieved instances. This query is equivalent to the `list()` example above." + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "719682c0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sourceContext distribution (top 5): [('cfihos_test', 198), (None, 2)]\n", + "Querying Tags with sourceContext == 'cfihos_test'\n", + "500\n", + "[\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"name\": \"Seawater Lift Pump A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Lube Oil Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"PA/GA System Process Area\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"df052853-f39c-405b-a275-33768b91c623\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"name\": \"Gas Turbine Generator A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"name\": \"Chemical Injection Pump\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Scaffolding Kit A\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"2nd Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"name\": \"UPS System Process Hall\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"PH 2nd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"2nd Stage Suction Line 12in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"c39906ea-0a81-4cb0-a002-9658b8846a38\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Subsea Control Module A\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Scrubber Level Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Platform Main Deck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"1st Stage Performance Control Valve\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Gas Turbine Generator B\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Top Drive System\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Safety Relief Valve\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-48\",\n", + " \"version\": 34,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Area 48 Subsea Systems\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-WT\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"name\": \"Water Treatment System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-UT\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"name\": \"Utilities System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-GC\",\n", + " \"version\": 34,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Gas Compression System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-EL\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"name\": \"Electrical Distribution\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23\",\n", + " \"version\": 34,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Area 23 Gas Compression\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH\",\n", + " \"version\": 33,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Valhall Process Hall\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"PH-S-2308\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"PH-S-2308\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TX-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"PH-S-2301\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"PH-S-2301\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"PH-S-2217\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"PH-S-2217\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"PH-S-1400\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"PH-S-1400\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TX-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"PH-S-1305\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"PH-S-1305\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Drilling Derrick Assembly\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Network Switch Cabinet A\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"90-MX-9245\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"90-MX-9245\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XX-9105\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"VFD 1st Stage Compressor\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Process Hall Overhead Crane 10T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"1st Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"PH 3rd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Helideck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"Instrument Equipment Room\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"2nd Stage Suction Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"6767827c-f362-4b04-b303-fb5669ecab2b\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " },\n", + " \"name\": \"Subsea Manifold\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Module Support Structure\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9011A+82B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"60-EN-9011A+82B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9011A+80E2\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"60-EN-9011A+80E2\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9010B+29A1\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-GK-9107B-M01\"\n", + " },\n", + " \"name\": \"60-EN-9010B+29A1\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9010B+27G2\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VA-9110-M01\"\n", + " },\n", + " \"name\": \"60-EN-9010B+27G2\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9010B+27G1\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"60-EN-9010B+27G1\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PC-9109-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9010A+28A2\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"60-EN-9010A+28A2\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-GK-9107A-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9010A+24B1\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"60-EN-9010A+24B1\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9106\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EH-9000A+H00\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"60-EH-9000A+H00\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Lifting Sling Assembly\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Discharge Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Portable Gas Detector\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-ZSL-96966B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XY-96966B\"\n", + " },\n", + " \"name\": \"48-ZSL-96966B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-ZSL-96966A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XY-96966A\"\n", + " },\n", + " \"name\": \"48-ZSL-96966A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-ZSH-96966B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-ZSH-96966B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XY-96966B\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-ZSH-96966A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-ZSH-96966A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XY-96966A\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XY-96966B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XY-96966B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XY-96966A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XY-96966A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XY-96961\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96961\"\n", + " },\n", + " \"name\": \"48-XY-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XY-96960\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96960\"\n", + " },\n", + " \"name\": \"48-XY-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XV-96962\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XV-96962\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9106\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XV-96961\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XV-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9105\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XV-96960-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XV-96960-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96960\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XV-96960-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XV-96960-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96960\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XV-96960\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XV-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-TB-9159\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XI-96964B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XI-96964B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XI-96964A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " },\n", + " \"name\": \"48-XI-96964A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-TSL-96960\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " },\n", + " \"name\": \"48-TSL-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-TB-9159\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-TB-9159\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-9113\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " },\n", + " \"name\": \"48-SU-9113\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-9106\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " },\n", + " \"name\": \"48-SU-9106\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-9105\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-SU-9105\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-8503\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:30.893+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Subsea Manifold\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-8502\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:30.893+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " },\n", + " \"name\": \"Subsea Christmas Tree Well-1\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-8501\",\n", + " \"version\": 45,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Subsea Control Module A\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PT-96962\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96962\"\n", + " },\n", + " \"name\": \"48-PT-96962\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PT-96961\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96961\"\n", + " },\n", + " \"name\": \"48-PT-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PT-96960\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-PT-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96960\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PSV-96963\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-PSV-96963\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-TB-9159\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PSE-96962\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9106\"\n", + " },\n", + " \"name\": \"48-PSE-96962\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PSE-96961\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9105\"\n", + " },\n", + " \"name\": \"48-PSE-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PI-96962A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-PI-96962A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96962\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PI-96962\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-PI-96962\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96962\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PI-96961A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96961\"\n", + " },\n", + " \"name\": \"48-PI-96961A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PI-96961\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-PI-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96961\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PI-96960\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96960\"\n", + " },\n", + " \"name\": \"48-PI-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PCV-96964\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-TB-9159\"\n", + " },\n", + " \"name\": \"48-PCV-96964\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PAL-96962\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96962\"\n", + " },\n", + " \"name\": \"48-PAL-96962\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PAL-96961\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96961\"\n", + " },\n", + " \"name\": \"48-PAL-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PAHH-96960\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96960\"\n", + " },\n", + " \"name\": \"48-PAHH-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-LG-96960\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-LG-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-TB-9159\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-FXY-96960\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-FXY-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-FE-9189\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " },\n", + " \"name\": \"48-FE-9189\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"1st Stage Gear Thrust Bearing Temp\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-V-90353\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-V-90353\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PDT-92506\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-V-90352\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92508\"\n", + " },\n", + " \"name\": \"45-V-90352\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92607B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-TT-92607B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92607A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-TT-92607A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-TT-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-TT-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92506\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-TT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-96196\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107B\"\n", + " },\n", + " \"name\": \"45-TI-96196\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-96195\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107A\"\n", + " },\n", + " \"name\": \"45-TI-96195\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92607B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-TT-92607B\"\n", + " },\n", + " \"name\": \"45-TI-92607B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92607A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-TI-92607A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-TT-92607A\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-TI-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-TT-92606\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92508\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-TI-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-TT-92508\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92506\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-TI-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-TT-92506\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92139B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"45-TI-92139B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92139A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"45-TI-92139A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92609\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-PT-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92608\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PT-92608\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PT-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-96196\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PSV-96196\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107B\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-96195\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107A\"\n", + " },\n", + " \"name\": \"45-PSV-96195\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92613\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PSV-92613\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92612\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PSV-92612\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92515\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PSV-92515\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92514\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PSV-92514\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92510S\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PSV-92510S\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PI-92609\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92609\"\n", + " },\n", + " \"name\": \"45-PI-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PI-92608\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PI-92608\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92608\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PI-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PI-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92508\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDT-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PDT-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDT-92506\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PDT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDI-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PDT-92606\"\n", + " },\n", + " \"name\": \"45-PDI-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDI-92506\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PDI-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PDT-92506\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDAH-92606\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PDAH-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PDT-92606\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDAH-92506\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PDT-92506\"\n", + " },\n", + " \"name\": \"45-PDAH-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PAHH-92609\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92609\"\n", + " },\n", + " \"name\": \"45-PAHH-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PAH-92608\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92608\"\n", + " },\n", + " \"name\": \"45-PAH-92608\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PAH-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92508\"\n", + " },\n", + " \"name\": \"45-PAH-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92613-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92613\"\n", + " },\n", + " \"name\": \"45-HV-92613-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92613-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92613-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92613\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92613-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92613-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92613\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92612-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92612-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92612\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92612-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92612\"\n", + " },\n", + " \"name\": \"45-HV-92612-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92612-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92612\"\n", + " },\n", + " \"name\": \"45-HV-92612-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92609\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-HV-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92515-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92515\"\n", + " },\n", + " \"name\": \"45-HV-92515-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92515-01\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92515-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92515\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92514-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92514\"\n", + " },\n", + " \"name\": \"45-HV-92514-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92514-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92514\"\n", + " },\n", + " \"name\": \"45-HV-92514-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92510-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92510-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92510-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92510-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92509\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92509\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FT-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FE-92606\"\n", + " },\n", + " \"name\": \"45-FT-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FT-92506\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-FT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FT-92139B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"45-FT-92139B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FT-92139A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"45-FT-92139A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FO-96130\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-FO-96130\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FO-92138\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"45-FO-92138\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FI-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92606\"\n", + " },\n", + " \"name\": \"45-FI-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FI-92506\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92506\"\n", + " },\n", + " \"name\": \"45-FI-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FI-92139B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92139B\"\n", + " },\n", + " \"name\": \"45-FI-92139B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FI-92139A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-FI-92139A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92139A\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FE-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-FE-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FE-92506\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-FE-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92506\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FAL-92139B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-FAL-92139B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92139B\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FAL-92139A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92139A\"\n", + " },\n", + " \"name\": \"45-FAL-92139A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FAH-92606\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-FAH-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92606\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FAH-92506\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92506\"\n", + " },\n", + " \"name\": \"45-FAH-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"423da2b8-3e47-4e1b-8139-c773f19508b2\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " },\n", + " \"name\": \"Subsea Christmas Tree Well-1\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"PH 1st Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"name\": \"Electrical Equipment Room\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Deluge Fire Protection Station A\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Emergency Shower Station\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"230900\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"name\": \"230900\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96121-03\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-96121-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96121-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96121-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-96121-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96121-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96121-01\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-96121-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96121-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96107-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96107-03\"\n", + " },\n", + " \"name\": \"23-ZT-96107-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96107-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96107-02\"\n", + " },\n", + " \"name\": \"23-ZT-96107-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96107-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96107-01\"\n", + " },\n", + " \"name\": \"23-ZT-96107-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-92543-MB\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-92543\"\n", + " },\n", + " \"name\": \"23-ZT-92543-MB\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-92543\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-92543\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FV-92543\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-92538-MB\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-92538-MB\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-92538\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-92538\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-92538\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PV-92538\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZS-96142C\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZS-96142C\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZS-96142B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZS-96142B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZS-96142A\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " },\n", + " \"name\": \"23-ZS-96142A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZI-96142B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZS-96142B\"\n", + " },\n", + " \"name\": \"23-ZI-96142B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZI-96142A\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZI-96142A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZS-96142A\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZI-92543\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-92543\"\n", + " },\n", + " \"name\": \"23-ZI-92543\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZI-92538\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZI-92538\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-92538\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96121-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZE-96121-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96121-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZE-96121-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96121-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZE-96121-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96107-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-ZE-96107-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96107-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-ZE-96107-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96107-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-ZE-96107-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAL-92538\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-92538\"\n", + " },\n", + " \"name\": \"23-ZAL-92538\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96121-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-03\"\n", + " },\n", + " \"name\": \"23-ZAHH-96121-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96121-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-02\"\n", + " },\n", + " \"name\": \"23-ZAHH-96121-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96121-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-01\"\n", + " },\n", + " \"name\": \"23-ZAHH-96121-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96107-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZAHH-96107-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96107-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-02\"\n", + " },\n", + " \"name\": \"23-ZAHH-96107-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96107-01\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZAHH-96107-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96121-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZAH-96121-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96121-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-02\"\n", + " },\n", + " \"name\": \"23-ZAH-96121-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96121-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-01\"\n", + " },\n", + " \"name\": \"23-ZAH-96121-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96107-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-03\"\n", + " },\n", + " \"name\": \"23-ZAH-96107-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96107-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-02\"\n", + " },\n", + " \"name\": \"23-ZAH-96107-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96107-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-01\"\n", + " },\n", + " \"name\": \"23-ZAH-96107-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSL-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " },\n", + " \"name\": \"23-YZSL-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSL-92526\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YZSL-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSL-92445\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YZSL-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSH-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YZSH-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSH-92526\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YZSH-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSH-92445\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " },\n", + " \"name\": \"23-YZSH-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YXY-92545-05\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " },\n", + " \"name\": \"23-YXY-92545-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YXY-92545-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " },\n", + " \"name\": \"23-YXY-92545-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YXY-92526-05\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YXY-92526-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YXY-92526-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YXY-92526-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YXY-92445-05\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YXY-92445-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YVX-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " },\n", + " \"name\": \"23-YVX-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YVX-92526\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YVX-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YVX-92445\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " },\n", + " \"name\": \"23-YVX-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96134-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96134-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96134-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96134-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96134-01\"\n", + " },\n", + " \"name\": \"23-YT-96134-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96133-02\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96133-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96133-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96133-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96133-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96133-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96123\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96123\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96122\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96122\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96120-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96120-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96120-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96120-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96120-01\"\n", + " },\n", + " \"name\": \"23-YT-96120-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96119-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96119-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96119-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96119-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96119-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96119-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96118-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96118-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96118-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96118-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96118-01\"\n", + " },\n", + " \"name\": \"23-YT-96118-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96117-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96117-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96117-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96117-01\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96117-01\"\n", + " },\n", + " \"name\": \"23-YT-96117-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96106-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96106-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96106-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96106-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96106-01\"\n", + " },\n", + " \"name\": \"23-YT-96106-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96105-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96105-02\"\n", + " },\n", + " \"name\": \"23-YT-96105-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96105-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96105-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96105-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSV-92545\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-YSV-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSV-92526\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YSV-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VG-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSV-92445\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-YSV-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSDP-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YSDP-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSDP-92526\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YSDP-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSDP-92445\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YSDP-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPV-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " },\n", + " \"name\": \"23-YPV-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPV-92526\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YPV-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPV-92445\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " },\n", + " \"name\": \"23-YPV-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPSV-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YPSV-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPSV-92526\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YPSV-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPSV-92445\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " },\n", + " \"name\": \"23-YPSV-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96134-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96134-02\"\n", + " },\n", + " \"name\": \"23-YI-96134-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96134-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YI-96134-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96134-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96133-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96133-02\"\n", + " },\n", + " \"name\": \"23-YI-96133-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96133-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YI-96133-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96133-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96123\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96123\"\n", + " },\n", + " \"name\": \"23-YI-96123\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96122\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96122\"\n", + " },\n", + " \"name\": \"23-YI-96122\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96120-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YI-96120-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96120-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96120-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96120-01\"\n", + " },\n", + " \"name\": \"23-YI-96120-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96119-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96119-02\"\n", + " },\n", + " \"name\": \"23-YI-96119-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96119-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YI-96119-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96119-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96118-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96118-02\"\n", + " },\n", + " \"name\": \"23-YI-96118-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96118-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96118-01\"\n", + " },\n", + " \"name\": \"23-YI-96118-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96117-02\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96117-02\"\n", + " },\n", + " \"name\": \"23-YI-96117-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96117-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96117-01\"\n", + " },\n", + " \"name\": \"23-YI-96117-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96106-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96106-02\"\n", + " },\n", + " \"name\": \"23-YI-96106-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96106-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96106-01\"\n", + " },\n", + " \"name\": \"23-YI-96106-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96105-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96105-02\"\n", + " },\n", + " \"name\": \"23-YI-96105-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96105-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96105-01\"\n", + " },\n", + " \"name\": \"23-YI-96105-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96134-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-YE-96134-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96134-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-YE-96134-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96133-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YE-96133-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96133-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-YE-96133-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96120-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96120-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96120-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96120-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96119-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YE-96119-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96119-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96119-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96118-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96118-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96118-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96118-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96117-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96117-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96117-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YE-96117-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96106-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YE-96106-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96106-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-YE-96106-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96105-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YE-96105-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96105-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-YE-96105-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96134-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96134-02\"\n", + " },\n", + " \"name\": \"23-YAHH-96134-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96134-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96134-01\"\n", + " },\n", + " \"name\": \"23-YAHH-96134-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96133-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96133-02\"\n", + " },\n", + " \"name\": \"23-YAHH-96133-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96133-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96133-01\"\n", + " },\n", + " \"name\": \"23-YAHH-96133-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96120-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96120-02\"\n", + " },\n", + " \"name\": \"23-YAHH-96120-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96120-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96120-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96120-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96119-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96119-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96119-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96119-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96119-01\"\n", + " },\n", + " \"name\": \"23-YAHH-96119-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96118-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96118-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96118-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96118-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96118-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96118-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96117-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96117-02\"\n", + " },\n", + " \"name\": \"23-YAHH-96117-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96117-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96117-01\"\n", + " },\n", + " \"name\": \"23-YAHH-96117-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96106-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96106-02\"\n", + " },\n", + " \"name\": \"23-YAHH-96106-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96106-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96106-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96106-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96105-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96105-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96105-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96105-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96105-01\"\n", + " },\n", + " \"name\": \"23-YAHH-96105-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96105\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FO-96105\"\n", + " },\n", + " \"name\": \"23-YAHH-96105\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96134-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96134-02\"\n", + " },\n", + " \"name\": \"23-YAH-96134-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96134-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96134-01\"\n", + " },\n", + " \"name\": \"23-YAH-96134-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96133-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96133-02\"\n", + " },\n", + " \"name\": \"23-YAH-96133-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96133-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96133-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96133-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96123\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96123\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96123\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96122\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96122\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96122\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96120-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96120-02\"\n", + " },\n", + " \"name\": \"23-YAH-96120-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96120-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96120-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96120-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96119-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96119-02\"\n", + " },\n", + " \"name\": \"23-YAH-96119-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96119-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96119-01\"\n", + " },\n", + " \"name\": \"23-YAH-96119-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96118-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96118-02\"\n", + " },\n", + " \"name\": \"23-YAH-96118-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96118-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96118-01\"\n", + " },\n", + " \"name\": \"23-YAH-96118-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96117-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96117-02\"\n", + " },\n", + " \"name\": \"23-YAH-96117-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96117-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96117-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96117-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96106-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96106-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96106-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96106-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96106-01\"\n", + " },\n", + " \"name\": \"23-YAH-96106-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96105-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96105-02\"\n", + " },\n", + " \"name\": \"23-YAH-96105-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96105-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96105-01\"\n", + " },\n", + " \"name\": \"23-YAH-96105-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XZSL-92748\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XZSL-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XZSH-92748\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XZSH-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96164-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-96164-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KB-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96164-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KB-9103\"\n", + " },\n", + " \"name\": \"23-XY-96164-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96135\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XT-96135\"\n", + " },\n", + " \"name\": \"23-XY-96135\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96125\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-96125\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XT-96125\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96124\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XT-96124\"\n", + " },\n", + " \"name\": \"23-XY-96124\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96108\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XT-96108\"\n", + " },\n", + " \"name\": \"23-XY-96108\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92748-04\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-92748-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92543-05\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-92543-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-05\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92543-04\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-92543-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-04\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92543-03\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-92543-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FY-92543-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92538-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-92538-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PV-92538\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92538-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PV-92538\"\n", + " },\n", + " \"name\": \"23-XY-92538-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XX-9114\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-2ND STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-XX-9114\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XX-9106\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-XX-9106\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XX-9105\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XX-9105\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XVP-92748\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " },\n", + " \"name\": \"23-XVP-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92748-J01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " },\n", + " \"name\": \"23-XV-92748-J01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92748\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-XV-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92601\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"2nd Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92501\",\n", + " \"version\": 42,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"1st Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XT-96135\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XE-96135\"\n", + " },\n", + " \"name\": \"23-XT-96135\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XT-96125\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XT-96125\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XE-96125\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XT-96124\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XE-96124\"\n", + " },\n", + " \"name\": \"23-XT-96124\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XT-96108\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XT-96108\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XE-96108\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XS-96139\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-XS-96139\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XS-92529\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-LTX-92529\"\n", + " },\n", + " \"name\": \"23-XS-92529\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XPV-92748\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XPV-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XE-96135\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-XE-96135\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XE-96125\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-XE-96125\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XE-96124\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-XE-96124\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XE-96108\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XE-96108\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-96139\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XA-96139\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XS-96139\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-92543-09\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XA-92543-09\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-09\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-92543-08\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-08\"\n", + " },\n", + " \"name\": \"23-XA-92543-08\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-92543-07\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-07\"\n", + " },\n", + " \"name\": \"23-XA-92543-07\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-92543-06\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XA-92543-06\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-06\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-92529\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-LTX-92529\"\n", + " },\n", + " \"name\": \"23-XA-92529\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VG-9101\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 08:55:02.631+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", + " },\n", + " \"name\": \"23-VG-9101\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9114\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " },\n", + " \"name\": \"23-VA-9114\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110-M01-39\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-VA-9110-M01-39\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110-M01-24\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-VA-9110-M01-24\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110-M01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VA-9110\"\n", + " },\n", + " \"name\": \"23-VA-9110-M01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110-H01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-VA-9110-H01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VA-9110\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110-A01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-VA-9110-A01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VA-9110\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-VA-9110\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TX-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TY-92604B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92604B\"\n", + " },\n", + " \"name\": \"23-TY-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TY-92504\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TY-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92504\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TX-96167\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PDT-96167\"\n", + " },\n", + " \"name\": \"23-TX-96167\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TX-9103\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TX-9103\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96196\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107B\"\n", + " },\n", + " \"name\": \"23-TW-96196\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96195\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107A\"\n", + " },\n", + " \"name\": \"23-TW-96195\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96183\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96183\"\n", + " },\n", + " \"name\": \"23-TW-96183\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96181-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-03\"\n", + " },\n", + " \"name\": \"23-TW-96181-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96181-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-02\"\n", + " },\n", + " \"name\": \"23-TW-96181-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96181-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TW-96181-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96148\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TW-96148\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96148\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-92524\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TI-92524\"\n", + " },\n", + " \"name\": \"23-TW-92524\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TV-92604B\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-TV-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TV-92504\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TV-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96183\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9106\"\n", + " },\n", + " \"name\": \"23-TT-96183\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96181-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-96181-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96181-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-96181-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96181-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-01\"\n", + " },\n", + " \"name\": \"23-TT-96181-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96168\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP DRY GAS SEAL SYS-PH\"\n", + " },\n", + " \"name\": \"23-TT-96168\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96148\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-96148\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96147-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"23-TT-96147-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96115-01\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"1st Stage Gear Thrust Bearing Temperature\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92604B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"230900\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92604A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92604A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92604B\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92604\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92604\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92604B\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92603\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92603\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92602\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-TT-92602\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92539 (2)\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-TT-92539 (2)\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92539\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-TT-92539\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92537\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92537\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92536-MB\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92536\"\n", + " },\n", + " \"name\": \"23-TT-92536-MB\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92536\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92536\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92533\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-TT-92533\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92532-MB\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92532\"\n", + " },\n", + " \"name\": \"23-TT-92532-MB\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92532\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92532\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92512\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92512\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92504\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92504\"\n", + " },\n", + " \"name\": \"23-TT-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92502\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92502\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TSHH-96197\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9106\"\n", + " },\n", + " \"name\": \"23-TSHH-96197\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TSHH-96147-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"23-TSHH-96147-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TSHH-96147\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"23-TSHH-96147\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TL-8602\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Portable Gas Detector\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TL-8601\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TIC-96148\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96148\"\n", + " },\n", + " \"name\": \"23-TIC-96148\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TIC-96147\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96147-02\"\n", + " },\n", + " \"name\": \"23-TIC-96147\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TIC-92604B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92604B\"\n", + " },\n", + " \"name\": \"23-TIC-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TIC-92604\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92604B\"\n", + " },\n", + " \"name\": \"23-TIC-92604\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TIC-92504\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92504\"\n", + " },\n", + " \"name\": \"23-TIC-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96183\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96183\"\n", + " },\n", + " \"name\": \"23-TI-96183\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96181-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-03\"\n", + " },\n", + " \"name\": \"23-TI-96181-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96168\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96168\"\n", + " },\n", + " \"name\": \"23-TI-96168\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96148\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96148\"\n", + " },\n", + " \"name\": \"23-TI-96148\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96147-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96147-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96147-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96137-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96137-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96137-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96137-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96137-02\"\n", + " },\n", + " \"name\": \"23-TI-96137-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96137-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96137-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96137-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-08\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-08\"\n", + " },\n", + " \"name\": \"23-TI-96136-08\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-07\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-07\"\n", + " },\n", + " \"name\": \"23-TI-96136-07\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-05\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-05\"\n", + " },\n", + " \"name\": \"23-TI-96136-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-04\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-04\"\n", + " },\n", + " \"name\": \"23-TI-96136-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-02\"\n", + " },\n", + " \"name\": \"23-TI-96136-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-01\"\n", + " },\n", + " \"name\": \"23-TI-96136-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96132-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96132-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96132-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96132-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96132-01\"\n", + " },\n", + " \"name\": \"23-TI-96132-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96131-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96131-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96131-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96131-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96131-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96131-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96114-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96114-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96114-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96114-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96114-01\"\n", + " },\n", + " \"name\": \"23-TI-96114-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96113-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96113-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96113-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96113-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96113-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96113-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96112-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96112-03\"\n", + " },\n", + " \"name\": \"23-TI-96112-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96112-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96112-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96112-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96111-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96111-03\"\n", + " },\n", + " \"name\": \"23-TI-96111-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96111-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96111-01\"\n", + " },\n", + " \"name\": \"23-TI-96111-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96104\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FG-96104\"\n", + " },\n", + " \"name\": \"23-TI-96104\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96103\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FG-96103\"\n", + " },\n", + " \"name\": \"23-TI-96103\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96102-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96102-03\"\n", + " },\n", + " \"name\": \"23-TI-96102-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96102-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96102-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96102-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96101-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96101-03\"\n", + " },\n", + " \"name\": \"23-TI-96101-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96101-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96101-01\"\n", + " },\n", + " \"name\": \"23-TI-96101-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92604A\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92604A\"\n", + " },\n", + " \"name\": \"23-TI-92604A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92603\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-92603\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92603\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92602\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-92602\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92602\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92539\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92539\"\n", + " },\n", + " \"name\": \"23-TI-92539\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92537\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92537\"\n", + " },\n", + " \"name\": \"23-TI-92537\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92536\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92536\"\n", + " },\n", + " \"name\": \"23-TI-92536\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92533 (2)\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-92533 (2)\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92533\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92533\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-92533\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92533\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92532\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92532\"\n", + " },\n", + " \"name\": \"23-TI-92532\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92524\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VG-9101\"\n", + " },\n", + " \"name\": \"23-TI-92524\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92512\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92512\"\n", + " },\n", + " \"name\": \"23-TI-92512\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92502\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-92502\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92502\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96183\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96183\"\n", + " },\n", + " \"name\": \"23-TE-96183\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96181-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"23-TE-96181-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96181-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"23-TE-96181-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96181-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"23-TE-96181-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96168\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96168\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96168\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96148\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96148\"\n", + " },\n", + " \"name\": \"23-TE-96148\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96147-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96147-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96147\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"23-TE-96147\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96137-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96137-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96137-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96137-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96137-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96137-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-09\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96136-09\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-08\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96136-08\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-07\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96136-07\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-06\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96136-06\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-05\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96136-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-04\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96136-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96136-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96136-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96136-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96132-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96132-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96132-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96132-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96131-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96131-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96131-01\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96131-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96116-04\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96116-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96116-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96116-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96116-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96116-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96116-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96116-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96115-04\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96115-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96115-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96115-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96115-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96115-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96115-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96115-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96114-04\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96114-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96114-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96114-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96114-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96114-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96114-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96114-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96113-04\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96113-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96113-03\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96113-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96113-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96113-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " }\n", + "]\n" + ] + } + ], + "source": [ + "# Discover a real sourceContext value in INST_SP so the query actually returns something.\n", + "from collections import Counter\n", + "\n", + "probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", + "source_contexts = Counter(\n", + " (node.properties.get(asset_vid, {}) or {}).get(\"sourceContext\")\n", + " for node in probe\n", + ")\n", + "print(\"sourceContext distribution (top 5):\", source_contexts.most_common(5))\n", + "\n", + "sourceContext = next((val for val, _ in source_contexts.most_common() if val), None)\n", + "if sourceContext is None:\n", + " raise RuntimeError(\n", + " \"No Tag in INST_SP has a populated sourceContext - pick another filter property.\"\n", + " )\n", + "print(f\"Querying Tags with sourceContext == {sourceContext!r}\")\n", + "\n", + "query = Query(\n", + " with_={ # FROM all Nodes WHERE space = INST_SP AND has data in asset view AND sourceContext = \n", + " \"assets\": NodeResultSetExpression(\n", + " filter=And(\n", + " Equals([\"node\", \"space\"], value={\"parameter\": \"space\"}),\n", + " HasData(views=[asset_vid]),\n", + " Equals(property=asset_vid.as_property_ref(\"sourceContext\"), value={\"parameter\": \"sourceContext\"}),\n", + " ),\n", + " limit=500,\n", + " sort=[InstanceSort(property=(\"node\", \"externalId\"), direction=\"descending\")],\n", + " ),\n", + " },\n", + " select={ # SELECT name, parent, tags FROM assets\n", + " \"assets\": Select(\n", + " [SourceSelector(asset_vid, [\"name\", \"parent\", \"tags\"])],\n", + " ),\n", + " },\n", + " parameters={\"space\": INST_SP, \"sourceContext\": sourceContext},\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " assets = res[\"assets\"]\n", + " print(len(assets))\n", + " print(assets)\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "markdown", + "id": "2d1b93a4", + "metadata": {}, + "source": [ + "# Get subtree of an asset\n", + "\n", + "Getting a subset of assets based on a root is a common use case. Use the 'path' property to extract all assets with a given node in their paths." + ] + }, + { + "cell_type": "markdown", + "id": "14026805", + "metadata": {}, + "source": [ + "### With ContainsAll" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ddf4035e", + "metadata": {}, + "outputs": [], + "source": [ + "# Pick a real subtree root: any Tag that is referenced as another Tag's parent\n", + "# is guaranteed to have at least one child, so ContainsAll/Prefix on path will\n", + "# return something. Cached as `sub_tree_root` for the Prefix cell below too.\n", + "try:\n", + " sub_tree_root\n", + "except NameError:\n", + " probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", + " sub_tree_root = None\n", + " for node in probe:\n", + " parent = (node.properties.get(asset_vid, {}) or {}).get(\"parent\")\n", + " if parent and parent.get(\"space\") and parent.get(\"externalId\"):\n", + " sub_tree_root = NodeId(parent[\"space\"], parent[\"externalId\"])\n", + " break\n", + " if sub_tree_root is None:\n", + " raise RuntimeError(\n", + " \"No Tag in INST_SP has a populated `parent` - cannot derive a subtree root.\"\n", + " )\n", + " print(f\"Using subtree root: {sub_tree_root}\")\n", + "\n", + "start_time = time.time()\n", + "sub_tree_nodes = client.data_modeling.instances.list(\n", + " sources=asset_vid,\n", + " filter=ContainsAll(property=asset_vid.as_property_ref(\"path\"), values=[sub_tree_root]),\n", + " limit=500,\n", + ")\n", + "contains_time = time.time() - start_time\n", + "print(f\"ContainsAll filter call took: {contains_time:.3f} seconds\")\n", + "print(len(sub_tree_nodes))\n", + "print(sub_tree_nodes)" + ] + }, + { + "cell_type": "markdown", + "id": "8282cf56", + "metadata": {}, + "source": [ + "### With Prefix (recommended)\n", + "\n", + "`Prefix` on `path` uses the prefix index and is typically much faster than `ContainsAll` for subtree extraction. Prefer `Prefix` whenever you have the root's full `path`. Use `ContainsAll` only when you need to match a node at an arbitrary position in the path." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "2e7854ab", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using subtree root: NodeId(space='inst_location', external_id='VAL-PH-23')\n", + "Prefix filter call took: 0.184 seconds\n", + "90\n", + "[\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-EL\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Electrical Distribution\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"Power generation and distribution\",\n", + " \"sourceId\": \"VAL-PH-23-EL\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-GC\",\n", + " \"version\": 34,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Gas Compression System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"1st 2nd 3rd stage gas compression\",\n", + " \"sourceId\": \"VAL-PH-23-GC\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-UT\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Utilities System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"General utilities and support\",\n", + " \"sourceId\": \"VAL-PH-23-UT\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-WT\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Water Treatment System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"Seawater and chemical injection\",\n", + " \"sourceId\": \"VAL-PH-23-WT\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"626221d1-e8f3-4761-97bd-239e013c7f75\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Module Support Structure\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Compressor module support steel\",\n", + " \"sourceId\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Instrument Equipment Room\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Instrument equipment room enclosure\",\n", + " \"sourceId\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Safety Relief Valve\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Pressure safety valve 1st stage discharge\",\n", + " \"sourceId\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"2nd Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Emergency shutdown valve 2nd stage suction\",\n", + " \"sourceId\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Suction Line 16in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"16 inch suction line from scrubber to 1st stage compressor\",\n", + " \"sourceId\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Seawater Lift Pump B\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Centrifugal seawater lift pump train B\",\n", + " \"sourceId\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Portable Gas Detector\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Portable multi-gas detector for confined space\",\n", + " \"sourceId\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"a86482db-1947-43e7-9781-67c6bc38ad09\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Medium voltage motor for 1st stage compressor\",\n", + " \"sourceId\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"PA/GA System Process Area\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"description\": \"Public address and general alarm system\",\n", + " \"sourceId\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"056df394-acc1-4b71-9897-0053e2aec3b0\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"056df394-acc1-4b71-9897-0053e2aec3b0\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Hydraulic torque wrench for flange bolting\",\n", + " \"sourceId\": \"056df394-acc1-4b71-9897-0053e2aec3b0\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"2a804545-b201-4985-822f-45c14ac0d1a5\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Electrical Equipment Room\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Main electrical equipment room enclosure\",\n", + " \"sourceId\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Discharge Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Shell and tube gas cooler after 1st stage\",\n", + " \"sourceId\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"8e337b6f-be72-416e-bef0-3308975ae627\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"VFD 1st Stage Compressor\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Variable frequency drive for 1st stage compressor\",\n", + " \"sourceId\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"af455e61-124c-46e9-9c9d-e962555a917c\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Performance Control Valve\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Anti-surge control valve 1st stage\",\n", + " \"sourceId\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Lube Oil Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Plate heat exchanger for compressor lube oil\",\n", + " \"sourceId\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"PH 1st Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"1st stage centrifugal gas compressor\",\n", + " \"sourceId\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Platform Main Deck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Main deck structural module\",\n", + " \"sourceId\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"2nd Stage Suction Line 12in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"12 inch suction line to 2nd stage compressor\",\n", + " \"sourceId\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Emergency Shower Station\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Emergency shower and eye wash station\",\n", + " \"sourceId\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Top Drive System\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"description\": \"Main top drive system\",\n", + " \"sourceId\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Scrubber Level Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Level transmitter 1st stage suction scrubber\",\n", + " \"sourceId\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"d271d97b-d105-49c2-977d-ec812b290554\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Scaffolding Kit A\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Standard scaffolding kit for maintenance\",\n", + " \"sourceId\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"dda44393-0a89-4654-a84f-af33ba19b93a\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Chemical Injection Pump\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Positive displacement chemical injection pump\",\n", + " \"sourceId\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Process Hall Overhead Crane 10T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"10 tonne overhead crane process hall\",\n", + " \"sourceId\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"a98260bd-c718-446c-901a-913809d4f095\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Gas Turbine Generator B\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"GE LM2500 gas turbine generator set B\",\n", + " \"sourceId\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"df052853-f39c-405b-a275-33768b91c623\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"df052853-f39c-405b-a275-33768b91c623\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Gas Turbine Generator A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"GE LM2500 gas turbine generator set A\",\n", + " \"sourceId\": \"df052853-f39c-405b-a275-33768b91c623\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Lifting Sling Assembly\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Certified lifting sling assembly 5T\",\n", + " \"sourceId\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"9266fab7-6edf-4411-a0a2-3074e322853f\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Differential pressure transmitter suction cooler\",\n", + " \"sourceId\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Pressure transmitter suction 1st stage compressor\",\n", + " \"sourceId\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Gas Detection System\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Combustible gas detection system area 23\",\n", + " \"sourceId\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Gas Export Line 24in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"24 inch gas export pipeline\",\n", + " \"sourceId\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"PH 3rd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"3rd stage centrifugal gas compressor\",\n", + " \"sourceId\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"PH 2nd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"2nd stage centrifugal gas compressor\",\n", + " \"sourceId\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Deluge Fire Protection Station A\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Deluge system fire protection station A\",\n", + " \"sourceId\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"6ead339e-d534-4778-a891-9312b2f6108e\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Helideck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Helideck platform structure\",\n", + " \"sourceId\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"ad443509-4fdb-4114-82a5-aa79bda20271\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"5 tonne overhead crane turbine hall\",\n", + " \"sourceId\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"UPS System Process Hall\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Uninterruptible power supply process hall\",\n", + " \"sourceId\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Gear Thrust Bearing Temp\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Temperature transmitter gear thrust bearing\",\n", + " \"sourceId\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"2nd Stage Suction Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Shell and tube gas cooler before 2nd stage\",\n", + " \"sourceId\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"8819a855-4229-4cb0-a975-967c6c3d935b\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Emergency shutdown valve 1st stage suction\",\n", + " \"sourceId\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"933aa789-5571-48bf-91a3-234f2a66522e\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Network Switch Cabinet A\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"description\": \"Main network switch cabinet area 23\",\n", + " \"sourceId\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"9e64206b-39d2-442f-bd80-4864ee58104d\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Drilling Derrick Assembly\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"description\": \"Main drilling derrick structure\",\n", + " \"sourceId\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Flow transmitter 1st stage compressor\",\n", + " \"sourceId\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Seawater Lift Pump A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Centrifugal seawater lift pump train A\",\n", + " \"sourceId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-KA-9102\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:22.932+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9102\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"PH 2nd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"2nd stage centrifugal gas compressor\",\n", + " \"sourceId\": \"23-KA-9102\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PSV-92550\",\n", + " \"version\": 46,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:22.932+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PSV-92550\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"1st Stage Discharge Safety Relief Valve\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Maintenance record 1st stage PSV\",\n", + " \"sourceId\": \"23-PSV-92550\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EA-9501\",\n", + " \"version\": 45,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EA-9501\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"1st Stage Discharge Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Maintenance record 1st stage discharge cooler\",\n", + " \"sourceId\": \"23-EA-9501\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EL-9701\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EL-9701\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Medium voltage motor for 1st stage compressor\",\n", + " \"sourceId\": \"23-EL-9701\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PT-92501\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PT-92501\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Pressure transmitter suction 1st stage compressor\",\n", + " \"sourceId\": \"23-PT-92501\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92501\",\n", + " \"version\": 42,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92501\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"1st Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Maintenance record for 1st stage ESDV\",\n", + " \"sourceId\": \"23-XV-92501\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-GT-9401\",\n", + " \"version\": 42,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:25.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-GT-9401\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", + " \"name\": \"Gas Turbine Generator A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Maintenance record gas turbine generator A\",\n", + " \"sourceId\": \"23-GT-9401\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PA-9201A\",\n", + " \"version\": 41,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:25.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PA-9201A\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Seawater Lift Pump A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Centrifugal seawater lift pump train A\",\n", + " \"sourceId\": \"23-PA-9201A\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-L-92701\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-18 19:19:32.744+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-L-92701\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"Gas Export Line 24in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"24 inch gas export pipeline\",\n", + " \"sourceId\": \"23-L-92701\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PCV-92538\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PCV-92538\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Anti-Surge Control Valve\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Anti-surge control valve 1st stage\",\n", + " \"sourceId\": \"23-PCV-92538\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92601\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92601\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"2nd Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Emergency shutdown valve 2nd stage suction\",\n", + " \"sourceId\": \"23-XV-92601\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EA-9502\",\n", + " \"version\": 36,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EA-9502\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"2nd Stage Discharge Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Shell and tube gas cooler before 2nd stage\",\n", + " \"sourceId\": \"23-EA-9502\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EA-9503\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EA-9503\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"Lube Oil Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Plate heat exchanger for compressor lube oil\",\n", + " \"sourceId\": \"23-EA-9503\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PA-9201B\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PA-9201B\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Seawater Lift Pump B\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Centrifugal seawater lift pump train B\",\n", + " \"sourceId\": \"23-PA-9201B\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-FT-92537\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FT-92537\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Flow transmitter 1st stage compressor\",\n", + " \"sourceId\": \"23-FT-92537\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-GT-9402\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-GT-9402\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Gas Turbine Generator B\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"GE LM2500 gas turbine generator set B\",\n", + " \"sourceId\": \"23-GT-9402\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-KA-9103\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9103\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"PH 3rd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"3rd stage centrifugal gas compressor\",\n", + " \"sourceId\": \"23-KA-9103\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-L-92501\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-L-92501\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"1st Stage Suction Line 16in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"16 inch suction line from scrubber to 1st stage compressor\",\n", + " \"sourceId\": \"23-L-92501\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-L-92601\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-L-92601\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"2nd Stage Suction Line 12in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"12 inch suction line to 2nd stage compressor\",\n", + " \"sourceId\": \"23-L-92601\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96115-01\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96115-01\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Gear Thrust Bearing Temperature\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Temperature transmitter gear thrust bearing\",\n", + " \"sourceId\": \"23-TT-96115-01\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23\",\n", + " \"version\": 34,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Area 23 Gas Compression\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"Gas compression area 23\",\n", + " \"sourceId\": \"VAL-PH-23\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TL-8602\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TL-8602\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Portable Gas Detector\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Portable multi-gas detector for confined space entry\",\n", + " \"sourceId\": \"23-TL-8602\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-DR-9902\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DR-9902\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Top Drive System\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"description\": \"Main top drive system\",\n", + " \"sourceId\": \"23-DR-9902\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EL-9703\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EL-9703\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"VFD 1st Stage Compressor\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Variable frequency drive for 1st stage compressor\",\n", + " \"sourceId\": \"23-EL-9703\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-IT-8302\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-IT-8302\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"PA/GA System Process Area\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"description\": \"Public address and general alarm system\",\n", + " \"sourceId\": \"23-IT-8302\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ME-9802\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ME-9802\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"5 tonne overhead crane turbine hall\",\n", + " \"sourceId\": \"23-ME-9802\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EN-8001\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EN-8001\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Electrical Equipment Room\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Main electrical equipment room enclosure\",\n", + " \"sourceId\": \"23-EN-8001\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EN-8002\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EN-8002\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"Instrument Equipment Room\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Instrument equipment room enclosure\",\n", + " \"sourceId\": \"23-EN-8002\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-IF-8201\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-IF-8201\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Platform Main Deck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Main deck structural module\",\n", + " \"sourceId\": \"23-IF-8201\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-IF-8202\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-IF-8202\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"Module Support Structure\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Compressor module support steel\",\n", + " \"sourceId\": \"23-IF-8202\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-MI-8402\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-MI-8402\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Scaffolding Kit A\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Standard scaffolding kit for maintenance\",\n", + " \"sourceId\": \"23-MI-8402\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EL-9702\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.984+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EL-9702\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"UPS System Process Hall\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Uninterruptible power supply process hall\",\n", + " \"sourceId\": \"23-EL-9702\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-DR-9901\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.984+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DR-9901\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Drilling Derrick Assembly\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"description\": \"Main drilling derrick structure\",\n", + " \"sourceId\": \"23-DR-9901\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HS-8103\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HS-8103\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Gas Detection System\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Combustible gas detection system area 23\",\n", + " \"sourceId\": \"23-HS-8103\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-IT-8301\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-IT-8301\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Network Switch Cabinet A\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"description\": \"Main network switch cabinet area 23\",\n", + " \"sourceId\": \"23-IT-8301\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-MI-8401\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-MI-8401\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Lifting Sling Assembly\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Certified lifting sling assembly 5T\",\n", + " \"sourceId\": \"23-MI-8401\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PA-9202\",\n", + " \"version\": 33,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PA-9202\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Chemical Injection Pump MEG\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Positive displacement diaphragm chemical injection pump\",\n", + " \"sourceId\": \"23-PA-9202\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-IF-8203\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-IF-8203\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Helideck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Helideck platform structure\",\n", + " \"sourceId\": \"23-IF-8203\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ME-9801\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ME-9801\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Process Hall Overhead Crane 10T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"10 tonne overhead crane process hall\",\n", + " \"sourceId\": \"23-ME-9801\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HS-8101\",\n", + " \"version\": 43,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HS-8101\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", + " \"name\": \"Deluge Fire Protection Station A\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Maintenance record deluge fire protection\",\n", + " \"sourceId\": \"23-HS-8101\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HS-8102\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HS-8102\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", + " \"name\": \"Emergency Shower Station\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Emergency shower and eye wash station\",\n", + " \"sourceId\": \"23-HS-8102\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TL-8601\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TL-8601\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", + " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Hydraulic torque wrench for flange bolting\",\n", + " \"sourceId\": \"23-TL-8601\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "]\n" + ] + } + ], + "source": [ + "# Reuse sub_tree_root if the ContainsAll cell above has been run; otherwise discover one.\n", + "try:\n", + " sub_tree_root\n", + "except NameError:\n", + " probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", + " sub_tree_root = None\n", + " for node in probe:\n", + " parent = (node.properties.get(asset_vid, {}) or {}).get(\"parent\")\n", + " if parent and parent.get(\"space\") and parent.get(\"externalId\"):\n", + " sub_tree_root = NodeId(parent[\"space\"], parent[\"externalId\"])\n", + " break\n", + " if sub_tree_root is None:\n", + " raise RuntimeError(\n", + " \"No Tag in INST_SP has a populated `parent` - cannot derive a subtree root.\"\n", + " )\n", + " print(f\"Using subtree root: {sub_tree_root}\")\n", + "\n", + "# Retrieve the root asset first to get its path (excluded from the timing below).\n", + "sub_tree_root_retrieved = client.data_modeling.instances.retrieve_nodes(\n", + " sub_tree_root,\n", + " sources=asset_vid,\n", + ")\n", + "\n", + "start_time = time.time()\n", + "sub_tree_nodes_prefix = client.data_modeling.instances.list(\n", + " sources=asset_vid,\n", + " filter=Prefix(\n", + " property=asset_vid.as_property_ref(\"path\"),\n", + " value=sub_tree_root_retrieved.properties.data[asset_vid][\"path\"],\n", + " ),\n", + " limit=500,\n", + ")\n", + "prefix_time = time.time() - start_time\n", + "print(f\"Prefix filter call took: {prefix_time:.3f} seconds\")\n", + "print(len(sub_tree_nodes_prefix))\n", + "print(sub_tree_nodes_prefix)" + ] + }, + { + "cell_type": "markdown", + "id": "62c0010b", + "metadata": {}, + "source": [ + "## Get multiple representations of an asset\n", + "\n", + "As you know, a single instance may have its properties in multiple views. When querying, listing or retrieval, it's possible to get multiple sources (views) along with their properties." + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "9c1a62b6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
spaceinst_location
external_idVAL-PH-23-WT
version35
last_updated_time2026-05-08 12:42:07.619000
created_time2026-03-18 13:14:46.171000
instance_typenode
path[{'space': 'inst_location', 'externalId': 'VAL...
root{'space': 'inst_location', 'externalId': 'VAL-...
parent{'space': 'inst_location', 'externalId': 'VAL-...
pathLastUpdatedTime2026-03-23T08:58:53.319752+00:00
nameWater Treatment System
tags[functional-location]
descriptionSeawater and chemical injection
sourceIdVAL-PH-23-WT
sourceContextcfihos_test
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asset_external_id = \"VAL-PH-23-WT\"\n", + "space = INST_SP\n", + "client.data_modeling.instances.retrieve_nodes(\n", + " NodeId(space, asset_external_id),\n", + " # NOTE: `cdf_cdm` is not installed in this project. The original example added\n", + " # cognite_asset_vid and describable_vid here to retrieve the same node viewed\n", + " # through CDM. Add additional view IDs (e.g. asset_vid and any view that 'implements'\n", + " # it, like FunctionalLocation) here if you want multi-view hydration.\n", + " sources=[asset_vid],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "7ea3b8cc", + "metadata": {}, + "source": [ + "### The same call using query SDK" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "7802256c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-WT\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"name\": \"Water Treatment System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"Seawater and chemical injection\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "]\n" + ] + } + ], + "source": [ + "asset_external_id = \"VAL-PH-23-WT\"\n", + "# Note: SpaceFilter does not accept {\"parameter\": ...} - use Equals((\"node\", \"space\"), ...)\n", + "# if you need to parameterize space. See \"parent / children\" example below.\n", + "query = Query(\n", + " with_={ # FROM all Nodes WHERE space = INST_SP and externalId = CNY-AC\n", + " \"assets\": NodeResultSetExpression(\n", + " filter=And(\n", + " Equals([\"node\", \"externalId\"], value=asset_external_id),\n", + " SpaceFilter(space=INST_SP),\n", + " ),\n", + " ),\n", + " },\n", + " select={\n", + " # seeing the same instance through multiple views - request only the properties you need\n", + " \"assets\": Select(\n", + " [\n", + " SourceSelector(asset_vid, [\"name\", \"description\", \"tags\", \"parent\"]),\n", + " # CDM views (cognite_asset_vid, describable_vid) are not installed\n", + " # in this project. Add other project view IDs here if needed.\n", + " ],\n", + " ),\n", + " },\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(res[\"assets\"])\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "markdown", + "id": "0c6dea9a", + "metadata": {}, + "source": [ + "## Get parent and/or children of an asset\n", + "\n", + "### Note that you can use this logic for any kind of **single** direct relations (and their reverse). For example, you can retrieve the type of the asset (see below)\n", + "\n", + "This way, you can traverse a graph using direct relations" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "cb9d9653", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "asset: [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XX-9105\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", + " },\n", + " \"name\": \"23-XX-9105\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - 1ST STAGE SUCTION/DISCHARGE COOLER SKID\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "]\n", + "parent: [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-1ST STAGE COMPRESSION-PH\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"230900\"\n", + " },\n", + " \"name\": \"23-1ST STAGE COMPRESSION-PH\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"1ST STAGE COMPRESSION ON PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "]\n", + "children: [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"90-MX-9245\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XX-9105\"\n", + " },\n", + " \"name\": \"90-MX-9245\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - MONORAIL OVER WALKWAY FOR EQUIPMENT ON SKID 23-XX-9105\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HA-9103\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XX-9105\"\n", + " },\n", + " \"name\": \"23-HA-9103\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - 1ST STAGE SUCTION COOLER\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HA-9114\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XX-9105\"\n", + " },\n", + " \"name\": \"23-HA-9114\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - 1ST STAGE DISCHARGE COOLER 1\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HA-9115\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XX-9105\"\n", + " },\n", + " \"name\": \"23-HA-9115\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - 1ST STAGE DISCHARGE COOLER 2\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "] (count=4)\n", + "further_children: [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PDT-92501\",\n", + " \"version\": 30,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Differential pressure transmitter suction cooler\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92609\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-HV-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92613\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-PSV-92613\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92607B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-TT-92607B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92748\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-XV-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH OFFGAS TO 1STSTGSUCTCOOLER\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDT-92506\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PDT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDT-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-PDT-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL CM\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-FT-92512\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-FT-92512\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HV-92545\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-HV-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL YSV OUTLET\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PDT-92502\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-PDT-92502\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL TUBES\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PDT-92602\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-PDT-92602\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1ST STG DISCH GAS COOLERS\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PV-92538\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-PV-92538\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGCOMP SUCTION STV\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92502\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-TT-92502\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92603\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-TT-92603\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL GAS OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ESDV-92551B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-ESDV-92551B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCHCLR GAS OUT EQ\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PT-92504\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-PT-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-92604B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-TE-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PT-92512\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-PT-92512\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92512\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-TT-92512\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92609\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-PT-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL CM OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-TT-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCLR COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TV-92504\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-TV-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL CM IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TV-92604B\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-TV-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSV-92545\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-YSV-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCHCOOLER B/D\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92510S\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PSV-92510S\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92514\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PSV-92514\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1ST STG SUCT COOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92607A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-TT-92607A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ESDV-92501A\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-ESDV-92501A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCLR GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92510-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-HV-92510-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL PSV IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92510-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-HV-92510-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL PSV OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92612\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-PSV-92612\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92608\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-PT-92608\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL CM OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FT-92506\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-FT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ESDV-92501B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-ESDV-92501B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCLR GAS IN EQUAL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-FV-92543\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-FV-92543\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGCOMP ANTI-SURGE\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ESDV-92551A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-ESDV-92551A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCHCLR GAS OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92509\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-HV-92509\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PT-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-TT-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED SPLY\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-92604A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-TE-92604A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSV-92445\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-YSV-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FE-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-FE-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92515\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PSV-92515\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1ST STG SUCT COOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92506\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-TT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCLR COOLMED SPLY\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "] (count=44)\n", + "type: []\n" + ] + } + ], + "source": [ + "# asset_eid = \"WLL-6080740225\"\n", + "asset_eid = \"23-XX-9105\"\n", + "# Tip: parameterise space with Equals((\"node\",\"space\"), {\"parameter\": \"space\"}) - SpaceFilter\n", + "# does not currently accept {\"parameter\": \"...\"}.\n", + "ASSET_PROPS = [\"name\", \"description\", \"source\", \"parent\", \"tags\"]\n", + "query = Query(\n", + " with_={ # FROM all Nodes WHERE space = INST_SP and externalId = CNY-AC\n", + " \"asset\": NodeResultSetExpression(\n", + " filter=And(\n", + " Equals(property=(\"node\", \"externalId\"), value=asset_eid),\n", + " Equals(property=(\"node\", \"space\"), value={\"parameter\": \"space\"}),\n", + " ),\n", + " ),\n", + " \"parent\": NodeResultSetExpression(\n", + " from_=\"asset\",\n", + " through=asset_vid.as_property_ref(\"parent\"),\n", + " direction=\"outwards\",\n", + " ),\n", + " \"children\": NodeResultSetExpression(\n", + " from_=\"asset\",\n", + " through=asset_vid.as_property_ref(\"parent\"),\n", + " direction=\"inwards\",\n", + " ),\n", + " \"further_children\": NodeResultSetExpression(\n", + " from_=\"children\",\n", + " through=asset_vid.as_property_ref(\"parent\"),\n", + " direction=\"inwards\",\n", + " ),\n", + " \"type\": NodeResultSetExpression(\n", + " from_=\"asset\",\n", + " through=asset_vid.as_property_ref(\"type\"),\n", + " direction=\"outwards\",\n", + " ),\n", + " },\n", + " select={\n", + " \"asset\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", + " \"parent\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", + " \"children\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", + " \"further_children\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", + " \"type\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", + " },\n", + " parameters={\"space\": INST_SP},\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(f\"asset: {res['asset']}\")\n", + " print(f\"parent: {res['parent']}\")\n", + " print(f\"children: {res['children']} (count={len(res['children'])})\")\n", + " print(f\"further_children: {res['further_children']} (count={len(res['further_children'])})\")\n", + " print(f\"type: {res['type']}\")\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "d108767b", + "metadata": {}, + "source": [ + "## Using the Nested filter\n", + "\n", + "Nested filter allows to use property of the directly related View to filter the instances. The filter can be applied only to single direct relations. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e313608d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "asset (count=98):\n", + " VAL-PH-23-EL name='Electrical Distribution'\n", + " VAL-PH-23-GC name='Gas Compression System'\n", + " VAL-PH-23-UT name='Utilities System'\n", + " VAL-PH-23-WT name='Water Treatment System'\n", + " VAL-PH-48 name='Area 48 Subsea Systems'\n", + " 626221d1-e8f3-4761-97bd-239e013c7f75 name='Module Support Structure'\n", + " 6b0eb178-2c4f-4fca-901b-2c59bf812582 name='Instrument Equipment Room'\n", + " a4b91d72-0d1b-4902-a8d4-98dfcbeabf70 name='1st Stage Safety Relief Valve'\n", + " cd5759fc-0fa0-4ce3-9831-47529722f738 name='2nd Stage Suction ESDV'\n", + " 0192bf8a-c9a6-4f47-b491-208e6c11e351 name='1st Stage Suction Line 16in'\n", + " 1d338ea3-7841-43fc-afe6-702966cbbffc name='Seawater Lift Pump B'\n", + " 4d839ff3-3a8f-4258-81d5-08409cdf2475 name='Portable Gas Detector'\n", + " 6767827c-f362-4b04-b303-fb5669ecab2b name='Subsea Manifold'\n", + " a86482db-1947-43e7-9781-67c6bc38ad09 name='MV Motor 1st Stage Compressor Drive'\n", + " e3e89763-dd36-4823-9738-17d9a4fecd02 name='PA/GA System Process Area'\n", + " 056df394-acc1-4b71-9897-0053e2aec3b0 name='Hydraulic Torque Wrench 3/4in'\n", + " 2a804545-b201-4985-822f-45c14ac0d1a5 name='Electrical Equipment Room'\n", + " 423da2b8-3e47-4e1b-8139-c773f19508b2 name='Subsea Christmas Tree Well-1'\n", + " 51afd982-edb1-4b71-a157-91e3a0d8085f name='1st Stage Discharge Cooler'\n", + " 8e337b6f-be72-416e-bef0-3308975ae627 name='VFD 1st Stage Compressor'\n", + " af455e61-124c-46e9-9c9d-e962555a917c name='1st Stage Performance Control Valve'\n", + " e43970f2-a955-44c7-beac-8f66eb2ae85d name='Lube Oil Cooler'\n", + " 3ced891b-185a-4be3-be88-79ff4410ee8c name='PH 1st Stage Gas Compressor'\n", + " b1fc60ab-b304-4d80-a737-ec43765620c5 name='Platform Main Deck'\n", + " c754af3e-9ad6-40fc-95aa-4ab7e12655be name='2nd Stage Suction Line 12in'\n", + " 238afe07-ae83-4b30-998c-d6e58b5c07c4 name='Emergency Shower Station'\n", + " a8c58534-b905-4f84-b987-5e7a4881f26b name='Top Drive System'\n", + " b3a5cc09-85d8-4196-a95f-61e2db77b49a name='1st Stage Scrubber Level Transmitter'\n", + " d271d97b-d105-49c2-977d-ec812b290554 name='Scaffolding Kit A'\n", + " dda44393-0a89-4654-a84f-af33ba19b93a name='Chemical Injection Pump'\n", + " 8b16b072-2c1c-4cd1-a13b-a70821d770e4 name='Process Hall Overhead Crane 10T'\n", + " a98260bd-c718-446c-901a-913809d4f095 name='Gas Turbine Generator B'\n", + " df052853-f39c-405b-a275-33768b91c623 name='Gas Turbine Generator A'\n", + " 5e0ae159-18b3-4970-88b7-9dd8995fcc5e name='Lifting Sling Assembly'\n", + " 9266fab7-6edf-4411-a0a2-3074e322853f name='1st Stage Suction Cooler dP Transmitter'\n", + " 94ccd3cc-48de-46d5-a9ec-890a78c5d716 name='1st Stage Suction Pressure Transmitter'\n", + " c39906ea-0a81-4cb0-a002-9658b8846a38 name='Subsea Control Module A'\n", + " 04d754eb-8ddd-4ea4-9b01-82365b85cfc2 name='Gas Detection System'\n", + " 0912fe96-a0f5-4fec-b3d8-8446cd03e230 name='Gas Export Line 24in'\n", + " 839e57a0-6765-4bd4-b7d7-1dfde9c1d969 name='PH 3rd Stage Gas Compressor'\n", + " c9a063b9-f0d1-433b-8c80-bdaaf1d949f5 name='PH 2nd Stage Gas Compressor'\n", + " 27f56b30-4aa3-4db9-8cdd-6d5ba4d84566 name='Deluge Fire Protection Station A'\n", + " 6ead339e-d534-4778-a891-9312b2f6108e name='Helideck'\n", + " ad443509-4fdb-4114-82a5-aa79bda20271 name='Turbine Hall Overhead Crane 5T'\n", + " ccdafea7-5bf0-4d40-924e-3f786b44e9a3 name='UPS System Process Hall'\n", + " 47d4a39c-7c0b-46bb-a290-c47a7528dfef name='1st Stage Gear Thrust Bearing Temp'\n", + " 682ec198-fcb1-4d86-b50d-34b1a8f48fe7 name='2nd Stage Suction Cooler'\n", + " 8819a855-4229-4cb0-a975-967c6c3d935b name='1st Stage Suction ESDV'\n", + " 933aa789-5571-48bf-91a3-234f2a66522e name='Network Switch Cabinet A'\n", + " 9e64206b-39d2-442f-bd80-4864ee58104d name='Drilling Derrick Assembly'\n", + " d28a5c2c-2800-4370-8c77-6647a45b1cb0 name='1st Stage Compressor Flow Transmitter'\n", + " f4af554c-57aa-4043-ad2b-263aa9e34485 name='Seawater Lift Pump A'\n", + " 23-KA-9102 name='PH 2nd Stage Gas Compressor'\n", + " 23-PSV-92550 name='1st Stage Discharge Safety Relief Valve'\n", + " 23-EA-9501 name='1st Stage Discharge Cooler'\n", + " 23-EL-9701 name='MV Motor 1st Stage Compressor Drive'\n", + " 23-PT-92501 name='1st Stage Suction Pressure Transmitter'\n", + " 23-XV-92501 name='1st Stage Suction ESDV'\n", + " 48-SU-8501 name='Subsea Control Module A'\n", + " 23-GT-9401 name='Gas Turbine Generator A'\n", + " 23-PA-9201A name='Seawater Lift Pump A'\n", + " 23-L-92701 name='Gas Export Line 24in'\n", + " 48-SU-8502 name='Subsea Christmas Tree Well-1'\n", + " 48-SU-8503 name='Subsea Manifold'\n", + " 23-PCV-92538 name='1st Stage Anti-Surge Control Valve'\n", + " 23-XV-92601 name='2nd Stage Suction ESDV'\n", + " 23-EA-9502 name='2nd Stage Discharge Cooler'\n", + " 23-EA-9503 name='Lube Oil Cooler'\n", + " 23-PA-9201B name='Seawater Lift Pump B'\n", + " 23-FT-92537 name='1st Stage Compressor Flow Transmitter'\n", + " 23-GT-9402 name='Gas Turbine Generator B'\n", + " 23-KA-9103 name='PH 3rd Stage Gas Compressor'\n", + " 23-L-92501 name='1st Stage Suction Line 16in'\n", + " 23-L-92601 name='2nd Stage Suction Line 12in'\n", + " 23-TT-96115-01 name='1st Stage Gear Thrust Bearing Temperature'\n", + " VAL-PH-23 name='Area 23 Gas Compression'\n", + " 23-TL-8602 name='Portable Gas Detector'\n", + " 23-DR-9902 name='Top Drive System'\n", + " 23-EL-9703 name='VFD 1st Stage Compressor'\n", + " 23-IT-8302 name='PA/GA System Process Area'\n", + " 23-ME-9802 name='Turbine Hall Overhead Crane 5T'\n", + " 23-EN-8001 name='Electrical Equipment Room'\n", + " 23-EN-8002 name='Instrument Equipment Room'\n", + " 23-IF-8201 name='Platform Main Deck'\n", + " 23-IF-8202 name='Module Support Structure'\n", + " 23-MI-8402 name='Scaffolding Kit A'\n", + " 23-EL-9702 name='UPS System Process Hall'\n", + " 23-DR-9901 name='Drilling Derrick Assembly'\n", + " 23-HS-8103 name='Gas Detection System'\n", + " 23-IT-8301 name='Network Switch Cabinet A'\n", + " 23-MI-8401 name='Lifting Sling Assembly'\n", + " 23-PA-9202 name='Chemical Injection Pump MEG'\n", + " 23-IF-8203 name='Helideck'\n", + " 23-ME-9801 name='Process Hall Overhead Crane 10T'\n", + " 23-HS-8101 name='Deluge Fire Protection Station A'\n", + " 23-HS-8102 name='Emergency Shower Station'\n", + " 23-TL-8601 name='Hydraulic Torque Wrench 3/4in'\n", + " 230900 name='230900'\n", + "equipment (count=20):\n", + " ab0ea3c4-b606-4e41-bad9-2ad0fb432c41 name='PH 1st Stage Gas Compressor'\n", + " cc3e885d-0b7f-4fc4-923d-510b40981e1d name='PH 2nd Stage Gas Compressor'\n", + " eff69eed-b9e9-427e-bf15-aa3cf93c43fb name='1st Stage Safety Relief Valve'\n", + " 2191ae23-2f42-4ccf-9060-29c4ddf67290 name='1st Stage Discharge Cooler'\n", + " 1b8f2e53-31aa-4eb8-b607-5383bfdd0c9f name='1st Stage Suction Pressure Transmitter'\n", + " 4ac9c8c0-1f44-4b21-bf2d-35614dcf7947 name='1st Stage Suction ESDV'\n", + " 89b47807-1a43-4f79-847e-d0633e0b7f9f name='MV Motor 1st Stage Compressor Drive'\n", + " efdeed77-abfe-4a63-a5e9-e87d874063d3 name='Subsea Control Module A'\n", + " ec68ec70-ea1c-409d-a73c-62819123eb3e name='Gas Turbine Generator A'\n", + " fe996ac6-9669-4853-a9ea-779e4ca40360 name='Seawater Lift Pump A'\n", + " EQ-VA-9301 name='1st Stage Suction ESDV'\n", + " EQ-KA-9102 name='PH 2nd Stage Gas Compressor'\n", + " EQ-PA-9201A name='Seawater Lift Pump A'\n", + " EQ-GT-9401 name='Gas Turbine Generator A'\n", + " EQ-PT-92501 name='1st Stage Suction Pressure Transmitter'\n", + " EQ-SU-8501 name='Subsea Control Module A'\n", + " EQ-EL-9701 name='MV Motor 1st Stage Compressor Drive'\n", + " EQ-KA-9101 name='PH 1st Stage Gas Compressor'\n", + " EQ-PSV-92550 name='1st Stage Safety Relief Valve'\n", + " EQ-EA-9501 name='1st Stage Discharge Cooler'\n" + ] + } + ], + "source": [ + "query = Query(\n", + " with_={\n", + " \"asset\": NodeResultSetExpression(\n", + " # Tags whose PARENT TAG has 'functional-location' in its tags property.\n", + " # Why parent? Nested can only filter through single-valued direct relations.\n", + " # On Tag, `parent` is the only single DR to another Tag.\n", + " filter=Nested(\n", + " scope=asset_vid.as_property_ref(\"parent\"),\n", + " filter=ContainsAll(\n", + " property=asset_vid.as_property_ref(\"tags\"),\n", + " values=[\"functional-location\"],\n", + " ),\n", + " ),\n", + " limit=500,\n", + " ),\n", + " \"equipment\": NodeResultSetExpression(\n", + " # FROM all Equipment WHERE asset (a direct relation to a Tag) has sourceContext == \"cfihos_test\"\n", + " filter=Nested(\n", + " scope=eq_vid.as_property_ref(\"asset\"),\n", + " filter=Equals(\n", + " property=asset_vid.as_property_ref(\"sourceContext\"),\n", + " value=\"cfihos_test\",\n", + " ),\n", + " ),\n", + " limit=500,\n", + " ),\n", + " },\n", + " select={\n", + " \"asset\": Select(\n", + " [SourceSelector(source=asset_vid, properties=[\"name\", \"description\", \"tags\", \"parent\"])]\n", + " ),\n", + " \"equipment\": Select(\n", + " [SourceSelector(source=eq_vid, properties=[\"name\", \"description\", \"tags\", \"asset\"])]\n", + " ),\n", + " },\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(f\"asset (count={len(res['asset'])}):\")\n", + " for n in res['asset']:\n", + " props = n.properties.get(asset_vid, {}) or {}\n", + " print(f\"ExId={n.external_id} name={props.get('name')!r}\")\n", + " print(f\"equipment (count={len(res['equipment'])}):\")\n", + " for n in res['equipment']:\n", + " props = n.properties.get(eq_vid, {}) or {}\n", + " print(f\"ExId={n.external_id} name={props.get('name')!r}\")\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a7eae73b", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "0c3b5293", + "metadata": {}, + "source": [ + "## The same query as a json object\n", + "\n", + "In some cases you may need to use a json object instead of SDK for querying" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "c75cab47", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "asset (count=0): []\n", + "equipment (count=0): []\n", + "debug: {'notices': []}\n" + ] + } + ], + "source": [ + "# JSON representation of the Nested filter query\n", + "json_query = {\n", + " \"with\": {\n", + " \"asset\": { # identifier of the item to retrieve\n", + " \"limit\": 1000, # default limit is 100\n", + " \"nodes\": { # equivalent to FROM all Nodes in the project WHERE 'parent' of instances with properties\n", + " # in the Asset view has 'tags' property with value 'Permanently Abandoned'\n", + " \"filter\": {\n", + " \"nested\": {\n", + " # Direct relation to instances with properties in Asset view through 'parent' property\n", + " \"scope\": [\n", + " asset_vid.space,\n", + " f\"{asset_vid.external_id}/{asset_vid.version}\",\n", + " \"parent\",\n", + " ],\n", + " # Filter by 'tags' property in Asset view\n", + " \"filter\": {\n", + " \"containsAll\": {\n", + " \"property\": [\n", + " asset_vid.space,\n", + " f\"{asset_vid.external_id}/{asset_vid.version}\",\n", + " \"aliases\",\n", + " ],\n", + " # Value to filter by\n", + " \"values\": [\"AC\"],\n", + " },\n", + " },\n", + " },\n", + " },\n", + " },\n", + " },\n", + " \"equipment\": {\n", + " # equivalent to FROM all Nodes in the project WHERE 'asset' of instances with properties\n", + " # in the Equipment view has a tag 'Permanently Abandoned'\n", + " \"limit\": 1000, # default limit is 100\n", + " \"nodes\": {\n", + " \"filter\": {\n", + " \"nested\": {\n", + " # Direct relation to instances with properties in Equipment view through 'asset' property\n", + " \"scope\": [\n", + " eq_vid.space,\n", + " f\"{eq_vid.external_id}/{eq_vid.version}\",\n", + " \"asset\",\n", + " ],\n", + " \"filter\": {\n", + " # Filter by 'tags' property in Equipment view\n", + " \"containsAll\": {\n", + " \"property\": [\n", + " eq_vid.space,\n", + " f\"{eq_vid.external_id}/{eq_vid.version}\",\n", + " \"tags\",\n", + " ],\n", + " \"values\": [\"Permanently Abandoned\"],\n", + " },\n", + " },\n", + " },\n", + " },\n", + " },\n", + " },\n", + " },\n", + " \"select\": {\n", + " \"asset\": {\n", + " \"sources\": [\n", + " {\n", + " \"source\": {\n", + " \"type\": \"view\",\n", + " \"space\": asset_vid.space,\n", + " \"externalId\": asset_vid.external_id,\n", + " \"version\": asset_vid.version,\n", + " },\n", + " \"properties\": [\"*\"], # All properties\n", + " },\n", + " ],\n", + " },\n", + " \"equipment\": {\n", + " \"sources\": [\n", + " {\n", + " \"source\": {\n", + " \"type\": \"view\",\n", + " \"space\": eq_vid.space,\n", + " \"externalId\": eq_vid.external_id,\n", + " \"version\": eq_vid.version,\n", + " },\n", + " \"properties\": [\"*\"], # All properties\n", + " },\n", + " ],\n", + " },\n", + " },\n", + " \"debug\": {},\n", + "}\n", + "@retry_cognite\n", + "def _post_query(payload: dict) -> dict:\n", + " \"\"\"POST the raw JSON query, raising CogniteAPIError on HTTP errors so retry can kick in.\"\"\"\n", + " response = client.post(\n", + " url=f\"/api/v1/projects/{client.config.project}/models/instances/query\",\n", + " json=payload,\n", + " )\n", + " # client.post returns a requests.Response - convert non-2xx into CogniteAPIError\n", + " if response.status_code >= 400:\n", + " try:\n", + " body = response.json()\n", + " message = body.get(\"error\", {}).get(\"message\", response.text)\n", + " except ValueError:\n", + " message = response.text\n", + " raise CogniteAPIError(message=message, code=response.status_code)\n", + " return response.json()\n", + "\n", + "\n", + "try:\n", + " body = _post_query(json_query)\n", + " assets = body[\"items\"][\"asset\"]\n", + " equipments = body[\"items\"][\"equipment\"]\n", + " print(f\"asset (count={len(assets)}): {assets}\")\n", + " print(f\"equipment (count={len(equipments)}): {equipments}\")\n", + " print(\"debug:\", body.get(\"debug\"))\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "markdown", + "id": "592dabf5", + "metadata": {}, + "source": [ + "# Timeseries, activities, files\n", + "## Retrive timeseries related to an asset\n", + "Activities and files can be returned the same way.\n", + "\n", + "The main problem here is that there is no way to extract assets and then use them to find the related timeseries. It is not possible because\n", + "- the properties holding node references pointing to assets are lists of direct relations\n", + "- reverse lists of direct relations cannot be queried\n", + "\n", + "If your use case requires traversing multiple nodes both ways and lists of direct relations do not fulfill the requirements - that's when you need edges. Another way is to chain the queries outside of 'query' structure (query -> get result -> use in next query)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a269d539", + "metadata": {}, + "outputs": [], + "source": [ + "# Replace external_id with a real Tag external_id from your project.\n", + "# Tip: run the list-assets cell above and copy any Tag's externalId here.\n", + "asset_id = NodeId(space=INST_SP, external_id=\"PLTF-EW1003A (Prince)-811\")\n", + "print(asset_id.dump(include_instance_type=False))\n", + "query = Query(\n", + " with_={\n", + " \"timeseries\": NodeResultSetExpression(\n", + " filter=ContainsAll(property=ts_vid.as_property_ref(\"assets\"), values={\"parameter\": \"asset\"}),\n", + " limit=500,\n", + " ),\n", + " },\n", + " select={\n", + " \"timeseries\": Select(\n", + " [\n", + " SourceSelector(\n", + " source=ts_vid,\n", + " properties=[\"name\", \"description\", \"source\", \"unit\", \"assets\", \"equipment\", \"activities\"],\n", + " ),\n", + " ],\n", + " ),\n", + " },\n", + " parameters={\"asset\": [asset_id.dump(include_instance_type=False)]},\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(res[\"timeseries\"])\n", + " print(len(res[\"timeseries\"]))\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "markdown", + "id": "59fa64a1", + "metadata": {}, + "source": [ + "## Retrieve activities of a timeseries and equipment related to these activities" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79bf3bbe", + "metadata": {}, + "outputs": [], + "source": [ + "# Replace external_id with a real TimeSeriesData externalId from your project.\n", + "timeseries_id = NodeId(space=INST_SP, external_id=\"CUMULATIVE_BOE_PER_DAY_TS_6081740998\")\n", + "query = Query(\n", + " with_={\n", + " \"activities\": NodeResultSetExpression(\n", + " filter=ContainsAll(\n", + " property=wo_vid.as_property_ref(\"timeSeries\"),\n", + " values={\"parameter\": \"timeseries\"},\n", + " ),\n", + " limit=100,\n", + " ),\n", + " \"equipment_activities\": NodeResultSetExpression(\n", + " from_=\"activities\",\n", + " through=wo_vid.as_property_ref(\"equipment\"), # must be a property reference\n", + " limit=10,\n", + " ),\n", + " },\n", + " select={\n", + " \"activities\": Select(\n", + " [\n", + " SourceSelector(\n", + " source=wo_vid,\n", + " properties=[\"name\", \"description\", \"source\", \"assets\", \"equipment\"],\n", + " ),\n", + " ],\n", + " ),\n", + " \"equipment_activities\": Select(\n", + " [\n", + " SourceSelector(\n", + " source=eq_vid,\n", + " properties=[\"name\", \"description\", \"source\"],\n", + " ),\n", + " ],\n", + " ),\n", + " },\n", + " parameters={\"timeseries\": [timeseries_id.dump(include_instance_type=False)]},\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(res[\"activities\"])\n", + " print(res[\"equipment_activities\"])\n", + " print(\"returned activities:\", len(res[\"activities\"]))\n", + " print(\"returned equipment activities:\", len(res[\"equipment_activities\"]))\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)" + ] + }, + { + "cell_type": "markdown", + "id": "36d12972", + "metadata": {}, + "source": [ + "## Retrieve equipment associated with an asset\n", + "\n", + "You can retrieve equipment related to an asset through the 'asset' property in the Equipment.\n", + "This is useful when trying to get the equipment instances associated with assets of a certain type or class\n", + "or extensions of CogniteAsset with some properties.\n", + "\n", + "Not that it only works with Equipment - all other Asset entity relationships (to files, timeseries, activities)\n", + "are Reverse **Lists** of direct relations, meaning they cannot be traversed inwards. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7404618c", + "metadata": {}, + "outputs": [], + "source": [ + "# Adjust these to values that actually exist in your project. Try the \"list assets\"\n", + "# cell first to see real `tags` and the `equipmentClass` values present on Equipment.\n", + "asset_tags = [\"AC901\"]\n", + "equipment_class = \"Casing\"\n", + "\n", + "query = Query(\n", + " with_={\n", + " \"assets\": NodeResultSetExpression(\n", + " # FROM all Nodes WHERE tags contains all of asset_tags\n", + " filter=ContainsAll(property=asset_vid.as_property_ref(\"tags\"), values={\"parameter\": \"asset_tags\"}),\n", + " limit=500,\n", + " ),\n", + " \"equipment\": NodeResultSetExpression(\n", + " from_=\"assets\",\n", + " through=eq_vid.as_property_ref(\"asset\"),\n", + " direction=\"inwards\",\n", + " # Equipment has an `equipmentClass` text property in this model,\n", + " # so we filter directly instead of using a Nested filter through\n", + " # the `equipmentType` direct relation (which would require the\n", + " # cdf_cdm:CogniteEquipmentType view to be installed).\n", + " filter=Equals(\n", + " property=eq_vid.as_property_ref(\"equipmentClass\"),\n", + " value={\"parameter\": \"equipmentClass\"},\n", + " ),\n", + " limit=500,\n", + " ),\n", + " },\n", + " select={\n", + " \"assets\": Select(\n", + " [SourceSelector(source=asset_vid, properties=[\"name\", \"description\", \"tags\"])]\n", + " ),\n", + " \"equipment\": Select(\n", + " [SourceSelector(source=eq_vid, properties=[\"name\", \"description\", \"asset\", \"equipmentClass\", \"class\", \"type\"])]\n", + " ),\n", + " },\n", + " parameters={\"equipmentClass\": equipment_class, \"asset_tags\": asset_tags},\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(f\"assets (count={len(res['assets'])}): {res['assets']}\")\n", + " print(f\"equipment (count={len(res['equipment'])}): {res['equipment']}\")\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "markdown", + "id": "10143a85", + "metadata": {}, + "source": [ + "# Using the cursor\n", + "\n", + "For completion, the methods below can be used to paginate with the instantiated query.\n", + "\n", + "Examples of usage and considerations are TBD" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "094a330c", + "metadata": {}, + "outputs": [], + "source": [ + "# Cursor-based pagination for data model queries (inspired by the Yggdrasil team).\n", + "# Uses run_sync (retry-wrapped /sync) so transient 408/429/5xx are handled transparently.\n", + "\n", + "def get_data(\n", + " client: CogniteClient,\n", + " query: Query,\n", + " max_iterations: int | None = 100,\n", + ") -> tuple[dict[str, list[NodeListWithCursor | EdgeListWithCursor]], dict[str, str]]:\n", + " \"\"\"Cursor based pagination for data model queries.\n", + "\n", + " The query object's cursors are updated in-place so the same query can be resumed.\n", + "\n", + " Args:\n", + " client: The Cognite client to use for making the query.\n", + " query: The query to fetch data from CDF data model.\n", + " max_iterations: Maximum number of pages to fetch. Use None or -1 for no limit.\n", + "\n", + " Returns:\n", + " A tuple of (collected_data, final_cursors). final_cursors is empty when the\n", + " result set is fully drained.\n", + " \"\"\"\n", + " if any(c for c in (query.cursors or {}).values()):\n", + " print(\"Cursors already set in query, continuing retrieval.\")\n", + "\n", + " collected_data: dict[str, list] = defaultdict(list)\n", + " current_iteration = 0\n", + " if max_iterations is None or max_iterations == -1:\n", + " max_iterations = float(\"inf\")\n", + "\n", + " res = None\n", + " while current_iteration < max_iterations:\n", + " res = run_sync(client, query)\n", + "\n", + " if res is None:\n", + " if not collected_data:\n", + " print(\"No data returned, exiting loop.\")\n", + " return {}, {}\n", + " print(\"Query failed, but returning collected data so far.\")\n", + " return collected_data, {}\n", + "\n", + " # Empty page across all selections = fully drained (cursor still kept for resume).\n", + " if all(not res.data[selection] for selection in res.data):\n", + " print(\"No more data available, exiting loop.\")\n", + " return collected_data, {}\n", + "\n", + " for selection in res.data:\n", + " collected_data[selection].extend(res.data[selection])\n", + "\n", + " query.cursors = res.cursors\n", + " current_iteration += 1\n", + "\n", + " print(f\"Collected data for {current_iteration} iterations.\")\n", + " return collected_data, (res.cursors if res is not None else {})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "05fb2590", + "metadata": {}, + "outputs": [], + "source": [ + "# The retry helpers (retry_cognite, run_query, run_sync, log_api_error) are defined\n", + "# at the top of this notebook, right after client setup. Use them for any new query:\n", + "#\n", + "# try:\n", + "# res = run_query(client, query) # /query with retry\n", + "# # or\n", + "# res = run_sync(client, query) # /sync with retry (for cursor pagination)\n", + "# except CogniteAPIError as e:\n", + "# log_api_error(e)\n", + "#\n", + "# For cursor-paginated traversal of large result sets, use get_data(client, query)\n", + "# defined in the cell above - it calls run_sync internally." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.14.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From f0f387194dda892f8ae59a302bd3d25233f8d954 Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Wed, 20 May 2026 08:22:52 +0530 Subject: [PATCH 14/18] ruff fixes in notebook --- .../cdf_queries/notebooks/queries.ipynb | 36350 ++++++++-------- 1 file changed, 18154 insertions(+), 18196 deletions(-) diff --git a/modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb b/modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb index 1374a76f..4324f7bb 100644 --- a/modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb +++ b/modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb @@ -1,18213 +1,18171 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "19587b30", - "metadata": {}, - "source": [ - "# Queries\n", - "This notebook contains a set of DMS query examples that can be used as templates." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "85f0feb4", - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "import os\n", - "import time\n", - "from collections import defaultdict\n", - "from pathlib import Path\n", - "\n", - "from dotenv import load_dotenv\n", - "\n", - "from cognite.client import CogniteClient, global_config\n", - "from cognite.client.config import ClientConfig\n", - "from cognite.client.credentials import OAuthClientCredentials\n", - "from cognite.client.data_classes.data_modeling import (\n", - " EdgeListWithCursor,\n", - " InstanceSort,\n", - " NodeId,\n", - " NodeListWithCursor,\n", - " ViewId,\n", - ")\n", - "from cognite.client.data_classes.data_modeling.query import (\n", - " NodeResultSetExpression,\n", - " Query,\n", - " QueryResult,\n", - " Select,\n", - " SourceSelector,\n", - ")\n", - "from cognite.client.data_classes.filters import (\n", - " And,\n", - " ContainsAll,\n", - " Equals,\n", - " HasData,\n", - " Nested,\n", - " Prefix,\n", - " SpaceFilter,\n", - ")\n", - "from cognite.client.exceptions import CogniteAPIError\n", - "from tenacity import (\n", - " retry,\n", - " retry_if_exception,\n", - " stop_after_attempt,\n", - " wait_exponential_jitter,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "8ea0065b", - "metadata": {}, - "source": [ - "## Basic setup" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "8655ee9b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loading credentials from C:\\Users\\JanIngeBergseth\\OneDrive - Cognite AS\\Documents\\GitHub\\library\\.env\n", - "Client configured with alpha features enabled and SDK retries tuned (max_retries=10).\n" - ] - } - ], - "source": [ - "# Locate the .env file by walking up from the current working directory until we find one.\n", - "# Notebooks set cwd to wherever Jupyter was launched, so a fixed `parents[N]` is fragile.\n", - "def _find_env_file(start: Path | None = None) -> Path | None:\n", - " start = (start or Path.cwd()).resolve()\n", - " for candidate in [start, *start.parents]:\n", - " env_path = candidate / \".env\"\n", - " if env_path.is_file():\n", - " return env_path\n", - " return None\n", - "\n", - "\n", - "env_file = _find_env_file()\n", - "if env_file is None:\n", - " raise FileNotFoundError(\n", - " \"Could not find a .env file by walking up from cwd. \"\n", - " \"Place a .env at the repo root or set the CDF_* / IDP_* env vars in your shell.\"\n", - " )\n", - "print(f\"Loading credentials from {env_file}\")\n", - "load_dotenv(env_file, override=False)\n", - "\n", - "project = os.getenv(\"CDF_PROJECT\")\n", - "cluster = os.getenv(\"CDF_CLUSTER\")\n", - "client_id = os.getenv(\"CDF_CLIENT_ID\") or os.getenv(\"IDP_CLIENT_ID\")\n", - "client_secret = os.getenv(\"CDF_CLIENT_SECRET\") or os.getenv(\"IDP_CLIENT_SECRET\")\n", - "tenant_id = os.getenv(\"CDF_TENANT_ID\") or os.getenv(\"IDP_TENANT_ID\")\n", - "base_url = os.getenv(\"CDF_BASE_URL\") or os.getenv(\"CDF_URL\") or (f\"https://{cluster}.cognitedata.com\" if cluster else None)\n", - "\n", - "missing = [\n", - " name for name, val in {\n", - " \"CDF_PROJECT\": project,\n", - " \"CDF_CLIENT_ID / IDP_CLIENT_ID\": client_id,\n", - " \"CDF_CLIENT_SECRET / IDP_CLIENT_SECRET\": client_secret,\n", - " \"CDF_TENANT_ID / IDP_TENANT_ID\": tenant_id,\n", - " \"CDF_BASE_URL / CDF_URL / CDF_CLUSTER\": base_url,\n", - " }.items()\n", - " if not val\n", - "]\n", - "if missing:\n", - " raise RuntimeError(\n", - " f\"Missing required environment variables: {', '.join(missing)}.\\n\"\n", - " f\"Checked .env: {env_file}\\n\"\n", - " \"Make sure these are defined there or exported in your shell.\"\n", - " )\n", - "\n", - "credentials = OAuthClientCredentials(\n", - " token_url=f\"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token\",\n", - " client_id=client_id,\n", - " client_secret=client_secret,\n", - " scopes=[f\"{base_url}/.default\"],\n", - ")\n", - "\n", - "# Increase SDK-level retry budget so transient 429/5xx are handled before they reach user code.\n", - "# The SDK already retries 429 and 5xx with backoff; we just give it more headroom.\n", - "global_config.max_retries = 10\n", - "global_config.max_retry_backoff = 30\n", - "global_config.disable_pypi_version_check = True\n", - "\n", - "client = CogniteClient(ClientConfig(\n", - " client_name=\"cdf-query-examples\",\n", - " project=project,\n", - " credentials=credentials,\n", - " base_url=base_url,\n", - "))\n", - "\n", - "# Merge (don't overwrite) headers so SDK defaults like x-cdp-sdk / User-Agent are preserved.\n", - "# cdf-version: alpha unlocks alpha features on /query (e.g. the \"debug\" envelope used below).\n", - "client.config.headers = {**(client.config.headers or {}), \"cdf-version\": \"alpha\"}\n", - "print(\"Client configured with alpha features enabled and SDK retries tuned (max_retries=10).\")" - ] - }, - { - "cell_type": "markdown", - "id": "0d88508a", - "metadata": {}, - "source": [ - "# Retry helpers (408 / 429 / 5xx)\n", - "\n", - "These wrappers handle the two failure modes you'll hit most often when running DMS queries:\n", - "\n", - "- **408 Request Timeout** — usually caused by oversized payloads (`properties=[\"*\"]`), high `limit`, or expensive joins. The right long-term fix is to narrow the query; the retry only buys time.\n", - "- **429 Too Many Requests** — token-bucket throttling. Exponential backoff with jitter clears it.\n", - "\n", - "The decorator below retries on `{408, 425, 429, 500, 502, 503, 504}` with jittered exponential backoff. The Cognite SDK also retries internally (configured above via `global_config`); these wrappers add a second layer for the user-facing call." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "1d29ce18", - "metadata": {}, - "outputs": [], - "source": [ - "RETRYABLE_CODES = {408, 425, 429, 500, 502, 503, 504}\n", - "\n", - "\n", - "def is_retryable_exception(e: BaseException) -> bool:\n", - " \"\"\"Retry on transient transport / throttling errors.\"\"\"\n", - " return isinstance(e, CogniteAPIError) and e.code in RETRYABLE_CODES\n", - "\n", - "\n", - "retry_cognite = retry(\n", - " reraise=True,\n", - " stop=stop_after_attempt(5),\n", - " retry=retry_if_exception(is_retryable_exception),\n", - " wait=wait_exponential_jitter(initial=1, max=30, jitter=2),\n", - ")\n", - "\n", - "\n", - "@retry_cognite\n", - "def run_query(client: CogniteClient, query: Query) -> QueryResult:\n", - " \"\"\"Run a /query against the data model with retry on 408/429/5xx.\"\"\"\n", - " return client.data_modeling.instances.query(query=query)\n", - "\n", - "\n", - "@retry_cognite\n", - "def run_sync(client: CogniteClient, query: Query) -> QueryResult:\n", - " \"\"\"Run a /sync (cursor-based) query with retry on 408/429/5xx.\"\"\"\n", - " return client.data_modeling.instances.sync(query=query)\n", - "\n", - "\n", - "def log_api_error(e: CogniteAPIError) -> None:\n", - " \"\"\"Print enough context to correlate with CDF backend logs.\"\"\"\n", - " print(f\"CogniteAPIError code={e.code} x_request_id={getattr(e, 'x_request_id', None)}: {e.message}\")" - ] - }, - { - "cell_type": "markdown", - "id": "0dd34662", - "metadata": {}, - "source": [ - "# Setup\n", - "\n", - "Define the instance space, the model space, the model version, and all `ViewId`s used by the queries below. Centralising these constants makes it trivial to retarget the notebook at a different deployment." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "949949e1", - "metadata": {}, - "outputs": [], - "source": [ - "# Target model in this project: dm_dom_oil_and_gas : dm_oil_and_gas_domain_model / v1\n", - "# Adjust INST_SP if your instance space differs from the model space.\n", - "INST_SP = \"inst_location\" # instance space\n", - "MODEL_SP_CDM = \"cdf_cdm\" # model space (where views/containers live)\n", - "MODEL_SP_IDM = \"cdf_idm\" # model space (where views/containers live)\n", - "MODEL_VERSION = \"v1\"\n", - "\n", - "# Project views (resolved from `client.data_modeling.views.list(space=MODEL_SP)`).\n", - "# `Tag` is this model's \"asset\" equivalent (functional tag). There is no Activity view -\n", - "# closest analogues are WorkOrder / WorkOrderOperation.\n", - "asset_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteAsset\", version=MODEL_VERSION)\n", - "ts_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteTimeSeries\", version=MODEL_VERSION)\n", - "file_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteFile\", version=MODEL_VERSION)\n", - "eq_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteEquipment\", version=MODEL_VERSION)\n", - "wo_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteMaintenanceOrder\", version=MODEL_VERSION)\n", - "wo_op_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteOperation\", version=MODEL_VERSION)\n", - "notification_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteNotification\", version=MODEL_VERSION)\n" - ] - }, - { - "cell_type": "markdown", - "id": "9f537673", - "metadata": {}, - "source": [ - "Optional sanity check: list all views in the model space." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "9e904032", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "asset_vid -> cdf_cdm:CogniteAsset/v1 (23 properties)\n", - "ts_vid -> cdf_cdm:CogniteTimeSeries/v1 (19 properties)\n", - "file_vid -> cdf_cdm:CogniteFile/v1 (18 properties)\n", - "eq_vid -> cdf_cdm:CogniteEquipment/v1 (18 properties)\n", - "wo_vid -> cdf_idm:CogniteMaintenanceOrder/v1 (24 properties)\n", - "wo_op_vid -> cdf_idm:CogniteOperation/v1 (27 properties)\n", - "notification_vid -> cdf_idm:CogniteNotification/v1 (21 properties)\n" - ] - } - ], - "source": [ - "# Inspect the ViewIds defined in the Setup cell. For each one, retrieve the full\n", - "# view definition from CDF and print its properties so you know what's available\n", - "# for filter / select / sort. Driven by the variables in Setup so renaming a view\n", - "# in one place is enough.\n", - "view_ids = {\n", - " \"asset_vid\": asset_vid,\n", - " \"ts_vid\": ts_vid,\n", - " \"file_vid\": file_vid,\n", - " \"eq_vid\": eq_vid,\n", - " \"wo_vid\": wo_vid,\n", - " \"wo_op_vid\": wo_op_vid,\n", - " \"notification_vid\": notification_vid,\n", - "}\n", - "\n", - "retrieved = client.data_modeling.views.retrieve(list(view_ids.values()))\n", - "retrieved_by_id = {(v.space, v.external_id, v.version): v for v in retrieved}\n", - "\n", - "# Cache property metadata per view for downstream query-design / debugging.\n", - "# Schema: view_properties[var_name] = {prop_name: {\"type\": ..., \"is_list\": bool,\n", - "# \"is_direct_relation\": bool, \"is_reverse_direct_relation\": bool,\n", - "# \"container\": (space, external_id) | None}}\n", - "view_properties: dict[str, dict[str, dict]] = {}\n", - "\n", - "for var_name, vid in view_ids.items():\n", - " view = retrieved_by_id.get((vid.space, vid.external_id, vid.version))\n", - " if view is None:\n", - " print(f\"{var_name} -> {vid.space}:{vid.external_id}/{vid.version} (NOT FOUND)\")\n", - " view_properties[var_name] = {}\n", - " continue\n", - "\n", - " props: dict[str, dict] = {}\n", - " for prop_name, prop in view.properties.items():\n", - " prop_type = getattr(prop, \"type\", None)\n", - " cls_name = prop.__class__.__name__\n", - " container = getattr(prop, \"container\", None)\n", - " props[prop_name] = {\n", - " \"type\": str(prop_type) if prop_type is not None else cls_name,\n", - " \"is_list\": getattr(prop, \"list\", False),\n", - " \"is_direct_relation\": cls_name == \"MappedPropertyApply\" and \"direct\" in str(prop_type).lower()\n", - " or \"direct\" in cls_name.lower(),\n", - " \"is_reverse_direct_relation\": \"ReverseDirectRelation\" in cls_name,\n", - " \"container\": (container.space, container.external_id) if container is not None else None,\n", - " }\n", - " view_properties[var_name] = props\n", - " print(f\"{var_name} -> {vid.space}:{vid.external_id}/{vid.version} ({len(props)} properties)\")\n", - "\n", - "# Quick-access helpers for query design:\n", - "# view_properties[\"asset_vid\"][\"parent\"] -> dict of metadata\n", - "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_direct_relation\"]]\n", - "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_reverse_direct_relation\"]]\n", - "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_list\"]]\n" - ] - }, - { - "cell_type": "markdown", - "id": "b4905a9d", - "metadata": {}, - "source": [ - "# Assets\n", - "## General asset queries" - ] - }, - { - "cell_type": "markdown", - "id": "95db1bc4", - "metadata": {}, - "source": [ - "### List assets and sort based on their externalId\n", - "\n", - "Listing assets works almost the same as in the case of legacy assets. The main difference is the **sources** argument, that allows to choose the properties that will be fetched, by selecting a view (or a list of views).\n", - "\n", - "You can sort/filter either by using a property specified within a View or node/edge registry.\n", - "Sorting by created/updated time is not allowed as of now, due to performance considerations (too much reindexing on every instance update)." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "3ddb499f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Returned 500 Tag instances.\n", - "Spaces seen in this batch: {'inst_location': 500}\n", - "\n", - "Sample Tag: space='inst_location' externalId='f4af554c-57aa-4043-ad2b-263aa9e34485'\n", - "{\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Seawater Lift Pump A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Centrifugal seawater lift pump train A\",\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"sourceId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - "}\n" - ] - } - ], - "source": [ - "# Listing instances through a view. The `sources` argument selects which view's\n", - "# properties get returned; sort/filter can reference any property on that view\n", - "# or the node/edge registry (e.g. (\"node\", \"externalId\")). Sorting on\n", - "# createdTime/lastUpdatedTime is not allowed.\n", - "#\n", - "# We omit `space=` so we discover where Tags actually live, then print the\n", - "# distribution of spaces so you can pin INST_SP correctly. The data\n", - "# (instance) space is usually different from the model space.\n", - "assets = client.data_modeling.instances.list(\n", - " sources=asset_vid,\n", - " limit=500,\n", - " # Equals filter against a single text property on the view.\n", - " filter=Equals(\n", - " property=asset_vid.as_property_ref(\"sourceContext\"),\n", - " value=\"cfihos_test\",\n", - " ),\n", - " sort=InstanceSort(property=[\"node\", \"externalId\"], direction=\"descending\"),\n", - ")\n", - "print(f\"Returned {len(assets)} Tag instances.\")\n", - "\n", - "from collections import Counter\n", - "\n", - "space_counts = Counter(a.space for a in assets)\n", - "print(\"Spaces seen in this batch:\", dict(space_counts))\n", - "if assets:\n", - " sample = assets[0]\n", - " print(f\"\\nSample Tag: space={sample.space!r} externalId={sample.external_id!r}\")\n", - " print(sample)\n", - "\n", - "# Once you know the right instance space, set INST_SP in the Setup cell and add\n", - "# `space=INST_SP` back here:\n", - "# filter=Equals([\"node\", \"space\"], value=INST_SP)\n", - "# ...or filter by a direct relation (note the {space, externalId} value shape):\n", - "# filter=Equals(\n", - "# property=asset_vid.as_property_ref(\"parent\"),\n", - "# value={\"space\": INST_SP, \"externalId\": \"SITE_OSL\"},\n", - "# )" - ] - }, - { - "cell_type": "markdown", - "id": "df281e86", - "metadata": {}, - "source": [ - "# Search endpoint\n", - "\n", - "Search is tokenized full-text lookup (not regex; see the docs for the exact tokenization rules).\n", - "\n", - "This endpoint targets the Elasticsearch backend where *every text property is indexed*, so it is typically more performant than `/query` for keyword-style lookups.\n", - "\n", - "Caveat: search can only match `text`-typed properties." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "69c9c180", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Searching Tag for 'Electrical Distributi' (derived from sample Tag 'Electrical Distribution')\n", - "Hits: 1\n", - "{\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-EL\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Electrical Distribution\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"Power generation and distribution\",\n", - " \"sourceId\": \"VAL-PH-23-EL\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - "}\n" - ] - } - ], - "source": [ - "# Pick a real name from the data first - hardcoded demo values from another\n", - "# project (like \"CNY-AC\") will silently return zero hits.\n", - "sample = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=5)\n", - "if not sample:\n", - " raise RuntimeError(\"No Tag instances exist - ingest data or query a different view.\")\n", - "\n", - "sample_name = None\n", - "for node in sample:\n", - " props = node.properties.get(asset_vid, {})\n", - " if props.get(\"name\"):\n", - " sample_name = props[\"name\"]\n", - " break\n", - "\n", - "# Search by a substring of a real name (drop the last 2 chars to make it a partial match).\n", - "search_term = (sample_name or \"\")[:-2] or sample_name\n", - "print(f\"Searching Tag for {search_term!r} (derived from sample Tag {sample_name!r})\")\n", - "\n", - "results = client.data_modeling.instances.search(\n", - " view=asset_vid,\n", - " space=INST_SP,\n", - " limit=20,\n", - " sort=InstanceSort(property=asset_vid.as_property_ref(\"name\"), direction=\"descending\"),\n", - " query=search_term,\n", - ")\n", - "print(f\"Hits: {len(results)}\")\n", - "for r in results[:5]:\n", - " print(r)" - ] - }, - { - "cell_type": "markdown", - "id": "af98bf8e", - "metadata": {}, - "source": [ - "## Iterative listing\n", - "\n", - "Using instances API you can fetch the instances in batches, to avoid timeouts and reduce memory load" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "ffee642e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "sourceContext distribution (top 5): [('cfihos_test', 198), (None, 2)]\n", - "Iterating Tags with sourceContext == 'cfihos_test'\n", - "Fetching batch 1\n", - "500\n", - "Fetching batch 2\n", - "500\n", - "Fetching batch 3\n", - "201\n" - ] - } - ], - "source": [ - "# Stream the full result set in batches. Set limit=None for unbounded iteration\n", - "# (this example caps at 20000 only to keep the demo fast - remove for production use).\n", - "# chunk_size controls page size; 500-1000 is typically a good compromise between\n", - "# round-trip overhead and the 408 risk that comes with huge per-page payloads.\n", - "\n", - "# Pick a real sourceContext value from the data instead of hardcoding one.\n", - "from collections import Counter\n", - "\n", - "probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", - "source_contexts = Counter(\n", - " (node.properties.get(asset_vid, {}) or {}).get(\"sourceContext\")\n", - " for node in probe\n", - ")\n", - "print(\"sourceContext distribution (top 5):\", source_contexts.most_common(5))\n", - "\n", - "source_context_value = next(\n", - " (val for val, _ in source_contexts.most_common() if val), None\n", - ")\n", - "if source_context_value is None:\n", - " print(\"No sourceContext values found - iterating without a filter instead.\")\n", - " extra_filter = None\n", - "else:\n", - " print(f\"Iterating Tags with sourceContext == {source_context_value!r}\")\n", - " extra_filter = Equals(\n", - " property=asset_vid.as_property_ref(\"sourceContext\"),\n", - " value=source_context_value,\n", - " )\n", - "\n", - "for i, assets in enumerate(client.data_modeling.instances(\n", - " chunk_size=500,\n", - " instance_type=\"node\",\n", - " sources=asset_vid,\n", - " space=INST_SP,\n", - " limit=20000,\n", - " sort=InstanceSort(property=[\"node\", \"externalId\"], direction=\"descending\"),\n", - " filter=extra_filter,\n", - ")):\n", - " print(f\"Fetching batch {i + 1}\")\n", - " print(len(assets))" - ] - }, - { - "cell_type": "markdown", - "id": "78a65d04", - "metadata": {}, - "source": [ - "### Fetching assets with the query endpoint\n", - "\n", - "Use `/query` when you need only a specific subset of properties of the retrieved instances. This query is equivalent to the `list()` example above." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "719682c0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "sourceContext distribution (top 5): [('cfihos_test', 198), (None, 2)]\n", - "Querying Tags with sourceContext == 'cfihos_test'\n", - "500\n", - "[\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"name\": \"Seawater Lift Pump A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Lube Oil Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"PA/GA System Process Area\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"df052853-f39c-405b-a275-33768b91c623\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"name\": \"Gas Turbine Generator A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"name\": \"Chemical Injection Pump\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Scaffolding Kit A\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"2nd Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"name\": \"UPS System Process Hall\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"PH 2nd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"2nd Stage Suction Line 12in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"c39906ea-0a81-4cb0-a002-9658b8846a38\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Subsea Control Module A\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Scrubber Level Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Platform Main Deck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"1st Stage Performance Control Valve\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Gas Turbine Generator B\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Top Drive System\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Safety Relief Valve\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-48\",\n", - " \"version\": 34,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Area 48 Subsea Systems\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-WT\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"name\": \"Water Treatment System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-UT\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"name\": \"Utilities System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-GC\",\n", - " \"version\": 34,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Gas Compression System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-EL\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"name\": \"Electrical Distribution\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23\",\n", - " \"version\": 34,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Area 23 Gas Compression\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH\",\n", - " \"version\": 33,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Valhall Process Hall\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"PH-S-2308\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"PH-S-2308\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TX-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"PH-S-2301\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"PH-S-2301\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"PH-S-2217\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"PH-S-2217\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"PH-S-1400\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"PH-S-1400\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TX-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"PH-S-1305\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"PH-S-1305\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Drilling Derrick Assembly\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Network Switch Cabinet A\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"90-MX-9245\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"90-MX-9245\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XX-9105\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"VFD 1st Stage Compressor\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Process Hall Overhead Crane 10T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"1st Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"PH 3rd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Helideck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"Instrument Equipment Room\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"2nd Stage Suction Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"6767827c-f362-4b04-b303-fb5669ecab2b\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " },\n", - " \"name\": \"Subsea Manifold\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Module Support Structure\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9011A+82B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"60-EN-9011A+82B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9011A+80E2\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"60-EN-9011A+80E2\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9010B+29A1\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-GK-9107B-M01\"\n", - " },\n", - " \"name\": \"60-EN-9010B+29A1\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9010B+27G2\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VA-9110-M01\"\n", - " },\n", - " \"name\": \"60-EN-9010B+27G2\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9010B+27G1\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"60-EN-9010B+27G1\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PC-9109-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9010A+28A2\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"60-EN-9010A+28A2\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-GK-9107A-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9010A+24B1\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"60-EN-9010A+24B1\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9106\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EH-9000A+H00\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"60-EH-9000A+H00\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Lifting Sling Assembly\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Discharge Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Portable Gas Detector\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-ZSL-96966B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XY-96966B\"\n", - " },\n", - " \"name\": \"48-ZSL-96966B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-ZSL-96966A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XY-96966A\"\n", - " },\n", - " \"name\": \"48-ZSL-96966A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-ZSH-96966B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-ZSH-96966B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XY-96966B\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-ZSH-96966A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-ZSH-96966A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XY-96966A\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XY-96966B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XY-96966B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XY-96966A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XY-96966A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XY-96961\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96961\"\n", - " },\n", - " \"name\": \"48-XY-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XY-96960\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96960\"\n", - " },\n", - " \"name\": \"48-XY-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XV-96962\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XV-96962\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9106\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XV-96961\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XV-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9105\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XV-96960-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XV-96960-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96960\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XV-96960-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XV-96960-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96960\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XV-96960\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XV-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-TB-9159\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XI-96964B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XI-96964B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XI-96964A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " },\n", - " \"name\": \"48-XI-96964A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-TSL-96960\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " },\n", - " \"name\": \"48-TSL-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-TB-9159\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-TB-9159\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-9113\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " },\n", - " \"name\": \"48-SU-9113\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-9106\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " },\n", - " \"name\": \"48-SU-9106\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-9105\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-SU-9105\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-8503\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:30.893+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Subsea Manifold\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-8502\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:30.893+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " },\n", - " \"name\": \"Subsea Christmas Tree Well-1\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-8501\",\n", - " \"version\": 45,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Subsea Control Module A\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PT-96962\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96962\"\n", - " },\n", - " \"name\": \"48-PT-96962\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PT-96961\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96961\"\n", - " },\n", - " \"name\": \"48-PT-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PT-96960\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-PT-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96960\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PSV-96963\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-PSV-96963\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-TB-9159\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PSE-96962\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9106\"\n", - " },\n", - " \"name\": \"48-PSE-96962\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PSE-96961\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9105\"\n", - " },\n", - " \"name\": \"48-PSE-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PI-96962A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-PI-96962A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96962\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PI-96962\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-PI-96962\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96962\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PI-96961A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96961\"\n", - " },\n", - " \"name\": \"48-PI-96961A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PI-96961\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-PI-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96961\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PI-96960\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96960\"\n", - " },\n", - " \"name\": \"48-PI-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PCV-96964\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-TB-9159\"\n", - " },\n", - " \"name\": \"48-PCV-96964\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PAL-96962\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96962\"\n", - " },\n", - " \"name\": \"48-PAL-96962\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PAL-96961\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96961\"\n", - " },\n", - " \"name\": \"48-PAL-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PAHH-96960\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96960\"\n", - " },\n", - " \"name\": \"48-PAHH-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-LG-96960\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-LG-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-TB-9159\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-FXY-96960\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-FXY-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-FE-9189\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " },\n", - " \"name\": \"48-FE-9189\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"1st Stage Gear Thrust Bearing Temp\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-V-90353\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-V-90353\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PDT-92506\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-V-90352\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92508\"\n", - " },\n", - " \"name\": \"45-V-90352\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92607B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-TT-92607B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92607A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-TT-92607A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-TT-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-TT-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92506\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-TT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-96196\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107B\"\n", - " },\n", - " \"name\": \"45-TI-96196\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-96195\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107A\"\n", - " },\n", - " \"name\": \"45-TI-96195\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92607B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-TT-92607B\"\n", - " },\n", - " \"name\": \"45-TI-92607B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92607A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-TI-92607A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-TT-92607A\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-TI-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-TT-92606\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92508\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-TI-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-TT-92508\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92506\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-TI-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-TT-92506\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92139B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"45-TI-92139B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92139A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"45-TI-92139A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92609\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-PT-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92608\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PT-92608\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PT-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-96196\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PSV-96196\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107B\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-96195\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107A\"\n", - " },\n", - " \"name\": \"45-PSV-96195\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92613\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PSV-92613\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92612\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PSV-92612\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92515\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PSV-92515\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92514\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PSV-92514\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92510S\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PSV-92510S\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PI-92609\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92609\"\n", - " },\n", - " \"name\": \"45-PI-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PI-92608\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PI-92608\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92608\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PI-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PI-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92508\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDT-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PDT-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDT-92506\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PDT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDI-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PDT-92606\"\n", - " },\n", - " \"name\": \"45-PDI-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDI-92506\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PDI-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PDT-92506\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDAH-92606\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PDAH-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PDT-92606\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDAH-92506\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PDT-92506\"\n", - " },\n", - " \"name\": \"45-PDAH-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PAHH-92609\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92609\"\n", - " },\n", - " \"name\": \"45-PAHH-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PAH-92608\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92608\"\n", - " },\n", - " \"name\": \"45-PAH-92608\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PAH-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92508\"\n", - " },\n", - " \"name\": \"45-PAH-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92613-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92613\"\n", - " },\n", - " \"name\": \"45-HV-92613-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92613-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92613-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92613\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92613-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92613-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92613\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92612-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92612-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92612\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92612-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92612\"\n", - " },\n", - " \"name\": \"45-HV-92612-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92612-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92612\"\n", - " },\n", - " \"name\": \"45-HV-92612-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92609\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-HV-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92515-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92515\"\n", - " },\n", - " \"name\": \"45-HV-92515-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92515-01\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92515-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92515\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92514-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92514\"\n", - " },\n", - " \"name\": \"45-HV-92514-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92514-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92514\"\n", - " },\n", - " \"name\": \"45-HV-92514-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92510-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92510-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92510-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92510-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92509\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92509\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FT-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FE-92606\"\n", - " },\n", - " \"name\": \"45-FT-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FT-92506\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-FT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FT-92139B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"45-FT-92139B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FT-92139A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"45-FT-92139A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FO-96130\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-FO-96130\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FO-92138\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"45-FO-92138\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FI-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92606\"\n", - " },\n", - " \"name\": \"45-FI-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FI-92506\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92506\"\n", - " },\n", - " \"name\": \"45-FI-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FI-92139B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92139B\"\n", - " },\n", - " \"name\": \"45-FI-92139B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FI-92139A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-FI-92139A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92139A\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FE-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-FE-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FE-92506\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-FE-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92506\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FAL-92139B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-FAL-92139B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92139B\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FAL-92139A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92139A\"\n", - " },\n", - " \"name\": \"45-FAL-92139A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FAH-92606\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-FAH-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92606\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FAH-92506\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92506\"\n", - " },\n", - " \"name\": \"45-FAH-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"423da2b8-3e47-4e1b-8139-c773f19508b2\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " },\n", - " \"name\": \"Subsea Christmas Tree Well-1\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"PH 1st Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"name\": \"Electrical Equipment Room\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Deluge Fire Protection Station A\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Emergency Shower Station\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"230900\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"name\": \"230900\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96121-03\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-96121-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96121-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96121-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-96121-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96121-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96121-01\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-96121-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96121-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96107-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96107-03\"\n", - " },\n", - " \"name\": \"23-ZT-96107-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96107-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96107-02\"\n", - " },\n", - " \"name\": \"23-ZT-96107-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96107-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96107-01\"\n", - " },\n", - " \"name\": \"23-ZT-96107-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-92543-MB\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-92543\"\n", - " },\n", - " \"name\": \"23-ZT-92543-MB\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-92543\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-92543\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FV-92543\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-92538-MB\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-92538-MB\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-92538\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-92538\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-92538\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PV-92538\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZS-96142C\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZS-96142C\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZS-96142B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZS-96142B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZS-96142A\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " },\n", - " \"name\": \"23-ZS-96142A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZI-96142B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZS-96142B\"\n", - " },\n", - " \"name\": \"23-ZI-96142B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZI-96142A\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZI-96142A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZS-96142A\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZI-92543\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-92543\"\n", - " },\n", - " \"name\": \"23-ZI-92543\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZI-92538\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZI-92538\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-92538\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96121-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZE-96121-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96121-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZE-96121-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96121-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZE-96121-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96107-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-ZE-96107-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96107-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-ZE-96107-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96107-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-ZE-96107-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAL-92538\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-92538\"\n", - " },\n", - " \"name\": \"23-ZAL-92538\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96121-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-03\"\n", - " },\n", - " \"name\": \"23-ZAHH-96121-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96121-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-02\"\n", - " },\n", - " \"name\": \"23-ZAHH-96121-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96121-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-01\"\n", - " },\n", - " \"name\": \"23-ZAHH-96121-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96107-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZAHH-96107-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96107-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-02\"\n", - " },\n", - " \"name\": \"23-ZAHH-96107-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96107-01\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZAHH-96107-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96121-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZAH-96121-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96121-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-02\"\n", - " },\n", - " \"name\": \"23-ZAH-96121-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96121-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-01\"\n", - " },\n", - " \"name\": \"23-ZAH-96121-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96107-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-03\"\n", - " },\n", - " \"name\": \"23-ZAH-96107-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96107-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-02\"\n", - " },\n", - " \"name\": \"23-ZAH-96107-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96107-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-01\"\n", - " },\n", - " \"name\": \"23-ZAH-96107-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSL-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " },\n", - " \"name\": \"23-YZSL-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSL-92526\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YZSL-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSL-92445\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YZSL-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSH-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YZSH-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSH-92526\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YZSH-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSH-92445\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " },\n", - " \"name\": \"23-YZSH-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YXY-92545-05\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " },\n", - " \"name\": \"23-YXY-92545-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YXY-92545-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " },\n", - " \"name\": \"23-YXY-92545-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YXY-92526-05\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YXY-92526-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YXY-92526-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YXY-92526-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YXY-92445-05\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YXY-92445-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YVX-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " },\n", - " \"name\": \"23-YVX-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YVX-92526\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YVX-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YVX-92445\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " },\n", - " \"name\": \"23-YVX-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96134-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96134-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96134-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96134-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96134-01\"\n", - " },\n", - " \"name\": \"23-YT-96134-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96133-02\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96133-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96133-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96133-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96133-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96133-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96123\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96123\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96122\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96122\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96120-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96120-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96120-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96120-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96120-01\"\n", - " },\n", - " \"name\": \"23-YT-96120-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96119-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96119-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96119-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96119-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96119-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96119-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96118-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96118-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96118-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96118-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96118-01\"\n", - " },\n", - " \"name\": \"23-YT-96118-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96117-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96117-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96117-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96117-01\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96117-01\"\n", - " },\n", - " \"name\": \"23-YT-96117-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96106-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96106-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96106-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96106-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96106-01\"\n", - " },\n", - " \"name\": \"23-YT-96106-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96105-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96105-02\"\n", - " },\n", - " \"name\": \"23-YT-96105-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96105-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96105-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96105-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSV-92545\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-YSV-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSV-92526\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YSV-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VG-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSV-92445\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-YSV-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSDP-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YSDP-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSDP-92526\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YSDP-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSDP-92445\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YSDP-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPV-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " },\n", - " \"name\": \"23-YPV-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPV-92526\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YPV-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPV-92445\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " },\n", - " \"name\": \"23-YPV-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPSV-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YPSV-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPSV-92526\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YPSV-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPSV-92445\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " },\n", - " \"name\": \"23-YPSV-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96134-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96134-02\"\n", - " },\n", - " \"name\": \"23-YI-96134-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96134-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YI-96134-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96134-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96133-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96133-02\"\n", - " },\n", - " \"name\": \"23-YI-96133-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96133-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YI-96133-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96133-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96123\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96123\"\n", - " },\n", - " \"name\": \"23-YI-96123\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96122\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96122\"\n", - " },\n", - " \"name\": \"23-YI-96122\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96120-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YI-96120-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96120-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96120-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96120-01\"\n", - " },\n", - " \"name\": \"23-YI-96120-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96119-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96119-02\"\n", - " },\n", - " \"name\": \"23-YI-96119-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96119-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YI-96119-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96119-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96118-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96118-02\"\n", - " },\n", - " \"name\": \"23-YI-96118-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96118-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96118-01\"\n", - " },\n", - " \"name\": \"23-YI-96118-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96117-02\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96117-02\"\n", - " },\n", - " \"name\": \"23-YI-96117-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96117-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96117-01\"\n", - " },\n", - " \"name\": \"23-YI-96117-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96106-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96106-02\"\n", - " },\n", - " \"name\": \"23-YI-96106-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96106-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96106-01\"\n", - " },\n", - " \"name\": \"23-YI-96106-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96105-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96105-02\"\n", - " },\n", - " \"name\": \"23-YI-96105-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96105-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96105-01\"\n", - " },\n", - " \"name\": \"23-YI-96105-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96134-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-YE-96134-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96134-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-YE-96134-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96133-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YE-96133-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96133-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-YE-96133-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96120-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96120-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96120-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96120-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96119-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YE-96119-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96119-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96119-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96118-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96118-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96118-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96118-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96117-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96117-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96117-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YE-96117-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96106-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YE-96106-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96106-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-YE-96106-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96105-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YE-96105-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96105-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-YE-96105-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96134-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96134-02\"\n", - " },\n", - " \"name\": \"23-YAHH-96134-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96134-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96134-01\"\n", - " },\n", - " \"name\": \"23-YAHH-96134-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96133-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96133-02\"\n", - " },\n", - " \"name\": \"23-YAHH-96133-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96133-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96133-01\"\n", - " },\n", - " \"name\": \"23-YAHH-96133-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96120-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96120-02\"\n", - " },\n", - " \"name\": \"23-YAHH-96120-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96120-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96120-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96120-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96119-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96119-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96119-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96119-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96119-01\"\n", - " },\n", - " \"name\": \"23-YAHH-96119-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96118-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96118-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96118-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96118-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96118-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96118-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96117-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96117-02\"\n", - " },\n", - " \"name\": \"23-YAHH-96117-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96117-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96117-01\"\n", - " },\n", - " \"name\": \"23-YAHH-96117-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96106-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96106-02\"\n", - " },\n", - " \"name\": \"23-YAHH-96106-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96106-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96106-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96106-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96105-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96105-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96105-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96105-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96105-01\"\n", - " },\n", - " \"name\": \"23-YAHH-96105-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96105\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FO-96105\"\n", - " },\n", - " \"name\": \"23-YAHH-96105\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96134-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96134-02\"\n", - " },\n", - " \"name\": \"23-YAH-96134-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96134-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96134-01\"\n", - " },\n", - " \"name\": \"23-YAH-96134-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96133-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96133-02\"\n", - " },\n", - " \"name\": \"23-YAH-96133-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96133-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96133-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96133-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96123\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96123\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96123\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96122\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96122\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96122\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96120-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96120-02\"\n", - " },\n", - " \"name\": \"23-YAH-96120-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96120-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96120-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96120-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96119-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96119-02\"\n", - " },\n", - " \"name\": \"23-YAH-96119-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96119-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96119-01\"\n", - " },\n", - " \"name\": \"23-YAH-96119-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96118-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96118-02\"\n", - " },\n", - " \"name\": \"23-YAH-96118-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96118-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96118-01\"\n", - " },\n", - " \"name\": \"23-YAH-96118-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96117-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96117-02\"\n", - " },\n", - " \"name\": \"23-YAH-96117-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96117-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96117-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96117-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96106-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96106-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96106-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96106-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96106-01\"\n", - " },\n", - " \"name\": \"23-YAH-96106-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96105-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96105-02\"\n", - " },\n", - " \"name\": \"23-YAH-96105-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96105-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96105-01\"\n", - " },\n", - " \"name\": \"23-YAH-96105-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XZSL-92748\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XZSL-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XZSH-92748\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XZSH-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96164-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-96164-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KB-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96164-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KB-9103\"\n", - " },\n", - " \"name\": \"23-XY-96164-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96135\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XT-96135\"\n", - " },\n", - " \"name\": \"23-XY-96135\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96125\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-96125\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XT-96125\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96124\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XT-96124\"\n", - " },\n", - " \"name\": \"23-XY-96124\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96108\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XT-96108\"\n", - " },\n", - " \"name\": \"23-XY-96108\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92748-04\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-92748-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92543-05\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-92543-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-05\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92543-04\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-92543-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-04\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92543-03\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-92543-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FY-92543-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92538-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-92538-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PV-92538\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92538-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PV-92538\"\n", - " },\n", - " \"name\": \"23-XY-92538-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XX-9114\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-2ND STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-XX-9114\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XX-9106\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-XX-9106\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XX-9105\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XX-9105\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XVP-92748\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " },\n", - " \"name\": \"23-XVP-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92748-J01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " },\n", - " \"name\": \"23-XV-92748-J01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92748\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-XV-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92601\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"2nd Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92501\",\n", - " \"version\": 42,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"1st Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XT-96135\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XE-96135\"\n", - " },\n", - " \"name\": \"23-XT-96135\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XT-96125\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XT-96125\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XE-96125\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XT-96124\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XE-96124\"\n", - " },\n", - " \"name\": \"23-XT-96124\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XT-96108\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XT-96108\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XE-96108\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XS-96139\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-XS-96139\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XS-92529\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-LTX-92529\"\n", - " },\n", - " \"name\": \"23-XS-92529\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XPV-92748\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XPV-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XE-96135\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-XE-96135\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XE-96125\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-XE-96125\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XE-96124\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-XE-96124\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XE-96108\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XE-96108\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-96139\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XA-96139\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XS-96139\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-92543-09\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XA-92543-09\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-09\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-92543-08\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-08\"\n", - " },\n", - " \"name\": \"23-XA-92543-08\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-92543-07\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-07\"\n", - " },\n", - " \"name\": \"23-XA-92543-07\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-92543-06\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XA-92543-06\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-06\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-92529\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-LTX-92529\"\n", - " },\n", - " \"name\": \"23-XA-92529\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VG-9101\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 08:55:02.631+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", - " },\n", - " \"name\": \"23-VG-9101\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9114\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " },\n", - " \"name\": \"23-VA-9114\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110-M01-39\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-VA-9110-M01-39\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110-M01-24\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-VA-9110-M01-24\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110-M01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VA-9110\"\n", - " },\n", - " \"name\": \"23-VA-9110-M01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110-H01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-VA-9110-H01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VA-9110\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110-A01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-VA-9110-A01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VA-9110\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-VA-9110\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TX-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TY-92604B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92604B\"\n", - " },\n", - " \"name\": \"23-TY-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TY-92504\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TY-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92504\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TX-96167\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PDT-96167\"\n", - " },\n", - " \"name\": \"23-TX-96167\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TX-9103\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TX-9103\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96196\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107B\"\n", - " },\n", - " \"name\": \"23-TW-96196\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96195\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107A\"\n", - " },\n", - " \"name\": \"23-TW-96195\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96183\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96183\"\n", - " },\n", - " \"name\": \"23-TW-96183\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96181-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-03\"\n", - " },\n", - " \"name\": \"23-TW-96181-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96181-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-02\"\n", - " },\n", - " \"name\": \"23-TW-96181-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96181-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TW-96181-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96148\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TW-96148\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96148\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-92524\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TI-92524\"\n", - " },\n", - " \"name\": \"23-TW-92524\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TV-92604B\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-TV-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TV-92504\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TV-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96183\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9106\"\n", - " },\n", - " \"name\": \"23-TT-96183\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96181-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-96181-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96181-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-96181-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96181-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-01\"\n", - " },\n", - " \"name\": \"23-TT-96181-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96168\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP DRY GAS SEAL SYS-PH\"\n", - " },\n", - " \"name\": \"23-TT-96168\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96148\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-96148\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96147-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"23-TT-96147-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96115-01\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"1st Stage Gear Thrust Bearing Temperature\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92604B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"230900\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92604A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92604A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92604B\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92604\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92604\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92604B\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92603\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92603\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92602\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-TT-92602\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92539 (2)\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-TT-92539 (2)\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92539\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-TT-92539\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92537\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92537\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92536-MB\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92536\"\n", - " },\n", - " \"name\": \"23-TT-92536-MB\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92536\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92536\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92533\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-TT-92533\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92532-MB\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92532\"\n", - " },\n", - " \"name\": \"23-TT-92532-MB\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92532\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92532\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92512\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92512\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92504\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92504\"\n", - " },\n", - " \"name\": \"23-TT-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92502\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92502\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TSHH-96197\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9106\"\n", - " },\n", - " \"name\": \"23-TSHH-96197\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TSHH-96147-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"23-TSHH-96147-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TSHH-96147\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"23-TSHH-96147\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TL-8602\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Portable Gas Detector\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TL-8601\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TIC-96148\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96148\"\n", - " },\n", - " \"name\": \"23-TIC-96148\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TIC-96147\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96147-02\"\n", - " },\n", - " \"name\": \"23-TIC-96147\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TIC-92604B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92604B\"\n", - " },\n", - " \"name\": \"23-TIC-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TIC-92604\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92604B\"\n", - " },\n", - " \"name\": \"23-TIC-92604\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TIC-92504\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92504\"\n", - " },\n", - " \"name\": \"23-TIC-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96183\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96183\"\n", - " },\n", - " \"name\": \"23-TI-96183\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96181-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-03\"\n", - " },\n", - " \"name\": \"23-TI-96181-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96168\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96168\"\n", - " },\n", - " \"name\": \"23-TI-96168\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96148\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96148\"\n", - " },\n", - " \"name\": \"23-TI-96148\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96147-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96147-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96147-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96137-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96137-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96137-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96137-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96137-02\"\n", - " },\n", - " \"name\": \"23-TI-96137-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96137-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96137-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96137-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-08\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-08\"\n", - " },\n", - " \"name\": \"23-TI-96136-08\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-07\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-07\"\n", - " },\n", - " \"name\": \"23-TI-96136-07\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-05\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-05\"\n", - " },\n", - " \"name\": \"23-TI-96136-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-04\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-04\"\n", - " },\n", - " \"name\": \"23-TI-96136-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-02\"\n", - " },\n", - " \"name\": \"23-TI-96136-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-01\"\n", - " },\n", - " \"name\": \"23-TI-96136-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96132-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96132-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96132-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96132-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96132-01\"\n", - " },\n", - " \"name\": \"23-TI-96132-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96131-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96131-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96131-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96131-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96131-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96131-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96114-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96114-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96114-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96114-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96114-01\"\n", - " },\n", - " \"name\": \"23-TI-96114-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96113-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96113-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96113-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96113-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96113-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96113-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96112-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96112-03\"\n", - " },\n", - " \"name\": \"23-TI-96112-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96112-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96112-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96112-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96111-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96111-03\"\n", - " },\n", - " \"name\": \"23-TI-96111-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96111-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96111-01\"\n", - " },\n", - " \"name\": \"23-TI-96111-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96104\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FG-96104\"\n", - " },\n", - " \"name\": \"23-TI-96104\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96103\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FG-96103\"\n", - " },\n", - " \"name\": \"23-TI-96103\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96102-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96102-03\"\n", - " },\n", - " \"name\": \"23-TI-96102-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96102-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96102-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96102-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96101-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96101-03\"\n", - " },\n", - " \"name\": \"23-TI-96101-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96101-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96101-01\"\n", - " },\n", - " \"name\": \"23-TI-96101-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92604A\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92604A\"\n", - " },\n", - " \"name\": \"23-TI-92604A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92603\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-92603\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92603\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92602\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-92602\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92602\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92539\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92539\"\n", - " },\n", - " \"name\": \"23-TI-92539\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92537\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92537\"\n", - " },\n", - " \"name\": \"23-TI-92537\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92536\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92536\"\n", - " },\n", - " \"name\": \"23-TI-92536\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92533 (2)\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-92533 (2)\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92533\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92533\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-92533\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92533\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92532\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92532\"\n", - " },\n", - " \"name\": \"23-TI-92532\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92524\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VG-9101\"\n", - " },\n", - " \"name\": \"23-TI-92524\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92512\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92512\"\n", - " },\n", - " \"name\": \"23-TI-92512\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92502\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-92502\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92502\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96183\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96183\"\n", - " },\n", - " \"name\": \"23-TE-96183\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96181-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"23-TE-96181-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96181-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"23-TE-96181-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96181-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"23-TE-96181-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96168\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96168\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96168\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96148\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96148\"\n", - " },\n", - " \"name\": \"23-TE-96148\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96147-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96147-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96147\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"23-TE-96147\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96137-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96137-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96137-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96137-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96137-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96137-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-09\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96136-09\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-08\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96136-08\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-07\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96136-07\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-06\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96136-06\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-05\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96136-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-04\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96136-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96136-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96136-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96136-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96132-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96132-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96132-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96132-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96131-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96131-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96131-01\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96131-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96116-04\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96116-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96116-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96116-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96116-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96116-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96116-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96116-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96115-04\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96115-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96115-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96115-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96115-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96115-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96115-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96115-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96114-04\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96114-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96114-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96114-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96114-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96114-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96114-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96114-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96113-04\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96113-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96113-03\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96113-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96113-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96113-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " }\n", - "]\n" - ] - } - ], - "source": [ - "# Discover a real sourceContext value in INST_SP so the query actually returns something.\n", - "from collections import Counter\n", - "\n", - "probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", - "source_contexts = Counter(\n", - " (node.properties.get(asset_vid, {}) or {}).get(\"sourceContext\")\n", - " for node in probe\n", - ")\n", - "print(\"sourceContext distribution (top 5):\", source_contexts.most_common(5))\n", - "\n", - "sourceContext = next((val for val, _ in source_contexts.most_common() if val), None)\n", - "if sourceContext is None:\n", - " raise RuntimeError(\n", - " \"No Tag in INST_SP has a populated sourceContext - pick another filter property.\"\n", - " )\n", - "print(f\"Querying Tags with sourceContext == {sourceContext!r}\")\n", - "\n", - "query = Query(\n", - " with_={ # FROM all Nodes WHERE space = INST_SP AND has data in asset view AND sourceContext = \n", - " \"assets\": NodeResultSetExpression(\n", - " filter=And(\n", - " Equals([\"node\", \"space\"], value={\"parameter\": \"space\"}),\n", - " HasData(views=[asset_vid]),\n", - " Equals(property=asset_vid.as_property_ref(\"sourceContext\"), value={\"parameter\": \"sourceContext\"}),\n", - " ),\n", - " limit=500,\n", - " sort=[InstanceSort(property=(\"node\", \"externalId\"), direction=\"descending\")],\n", - " ),\n", - " },\n", - " select={ # SELECT name, parent, tags FROM assets\n", - " \"assets\": Select(\n", - " [SourceSelector(asset_vid, [\"name\", \"parent\", \"tags\"])],\n", - " ),\n", - " },\n", - " parameters={\"space\": INST_SP, \"sourceContext\": sourceContext},\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " assets = res[\"assets\"]\n", - " print(len(assets))\n", - " print(assets)\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, - { - "cell_type": "markdown", - "id": "2d1b93a4", - "metadata": {}, - "source": [ - "# Get subtree of an asset\n", - "\n", - "Getting a subset of assets based on a root is a common use case. Use the 'path' property to extract all assets with a given node in their paths." - ] - }, - { - "cell_type": "markdown", - "id": "14026805", - "metadata": {}, - "source": [ - "### With ContainsAll" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ddf4035e", - "metadata": {}, - "outputs": [], - "source": [ - "# Pick a real subtree root: any Tag that is referenced as another Tag's parent\n", - "# is guaranteed to have at least one child, so ContainsAll/Prefix on path will\n", - "# return something. Cached as `sub_tree_root` for the Prefix cell below too.\n", - "try:\n", - " sub_tree_root\n", - "except NameError:\n", - " probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", - " sub_tree_root = None\n", - " for node in probe:\n", - " parent = (node.properties.get(asset_vid, {}) or {}).get(\"parent\")\n", - " if parent and parent.get(\"space\") and parent.get(\"externalId\"):\n", - " sub_tree_root = NodeId(parent[\"space\"], parent[\"externalId\"])\n", - " break\n", - " if sub_tree_root is None:\n", - " raise RuntimeError(\n", - " \"No Tag in INST_SP has a populated `parent` - cannot derive a subtree root.\"\n", - " )\n", - " print(f\"Using subtree root: {sub_tree_root}\")\n", - "\n", - "start_time = time.time()\n", - "sub_tree_nodes = client.data_modeling.instances.list(\n", - " sources=asset_vid,\n", - " filter=ContainsAll(property=asset_vid.as_property_ref(\"path\"), values=[sub_tree_root]),\n", - " limit=500,\n", - ")\n", - "contains_time = time.time() - start_time\n", - "print(f\"ContainsAll filter call took: {contains_time:.3f} seconds\")\n", - "print(len(sub_tree_nodes))\n", - "print(sub_tree_nodes)" - ] - }, - { - "cell_type": "markdown", - "id": "8282cf56", - "metadata": {}, - "source": [ - "### With Prefix (recommended)\n", - "\n", - "`Prefix` on `path` uses the prefix index and is typically much faster than `ContainsAll` for subtree extraction. Prefer `Prefix` whenever you have the root's full `path`. Use `ContainsAll` only when you need to match a node at an arbitrary position in the path." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "2e7854ab", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using subtree root: NodeId(space='inst_location', external_id='VAL-PH-23')\n", - "Prefix filter call took: 0.184 seconds\n", - "90\n", - "[\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-EL\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Electrical Distribution\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"Power generation and distribution\",\n", - " \"sourceId\": \"VAL-PH-23-EL\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-GC\",\n", - " \"version\": 34,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Gas Compression System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"1st 2nd 3rd stage gas compression\",\n", - " \"sourceId\": \"VAL-PH-23-GC\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-UT\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Utilities System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"General utilities and support\",\n", - " \"sourceId\": \"VAL-PH-23-UT\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-WT\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Water Treatment System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"Seawater and chemical injection\",\n", - " \"sourceId\": \"VAL-PH-23-WT\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"626221d1-e8f3-4761-97bd-239e013c7f75\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Module Support Structure\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Compressor module support steel\",\n", - " \"sourceId\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Instrument Equipment Room\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Instrument equipment room enclosure\",\n", - " \"sourceId\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Safety Relief Valve\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Pressure safety valve 1st stage discharge\",\n", - " \"sourceId\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"2nd Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Emergency shutdown valve 2nd stage suction\",\n", - " \"sourceId\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Suction Line 16in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"16 inch suction line from scrubber to 1st stage compressor\",\n", - " \"sourceId\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Seawater Lift Pump B\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Centrifugal seawater lift pump train B\",\n", - " \"sourceId\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Portable Gas Detector\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Portable multi-gas detector for confined space\",\n", - " \"sourceId\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"a86482db-1947-43e7-9781-67c6bc38ad09\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Medium voltage motor for 1st stage compressor\",\n", - " \"sourceId\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"PA/GA System Process Area\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"description\": \"Public address and general alarm system\",\n", - " \"sourceId\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"056df394-acc1-4b71-9897-0053e2aec3b0\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"056df394-acc1-4b71-9897-0053e2aec3b0\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Hydraulic torque wrench for flange bolting\",\n", - " \"sourceId\": \"056df394-acc1-4b71-9897-0053e2aec3b0\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"2a804545-b201-4985-822f-45c14ac0d1a5\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Electrical Equipment Room\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Main electrical equipment room enclosure\",\n", - " \"sourceId\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Discharge Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Shell and tube gas cooler after 1st stage\",\n", - " \"sourceId\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"8e337b6f-be72-416e-bef0-3308975ae627\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"VFD 1st Stage Compressor\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Variable frequency drive for 1st stage compressor\",\n", - " \"sourceId\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"af455e61-124c-46e9-9c9d-e962555a917c\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Performance Control Valve\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Anti-surge control valve 1st stage\",\n", - " \"sourceId\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Lube Oil Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Plate heat exchanger for compressor lube oil\",\n", - " \"sourceId\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"PH 1st Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"1st stage centrifugal gas compressor\",\n", - " \"sourceId\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Platform Main Deck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Main deck structural module\",\n", - " \"sourceId\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"2nd Stage Suction Line 12in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"12 inch suction line to 2nd stage compressor\",\n", - " \"sourceId\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Emergency Shower Station\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Emergency shower and eye wash station\",\n", - " \"sourceId\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Top Drive System\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"description\": \"Main top drive system\",\n", - " \"sourceId\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Scrubber Level Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Level transmitter 1st stage suction scrubber\",\n", - " \"sourceId\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"d271d97b-d105-49c2-977d-ec812b290554\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Scaffolding Kit A\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Standard scaffolding kit for maintenance\",\n", - " \"sourceId\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"dda44393-0a89-4654-a84f-af33ba19b93a\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Chemical Injection Pump\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Positive displacement chemical injection pump\",\n", - " \"sourceId\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Process Hall Overhead Crane 10T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"10 tonne overhead crane process hall\",\n", - " \"sourceId\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"a98260bd-c718-446c-901a-913809d4f095\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Gas Turbine Generator B\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"GE LM2500 gas turbine generator set B\",\n", - " \"sourceId\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"df052853-f39c-405b-a275-33768b91c623\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"df052853-f39c-405b-a275-33768b91c623\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Gas Turbine Generator A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"GE LM2500 gas turbine generator set A\",\n", - " \"sourceId\": \"df052853-f39c-405b-a275-33768b91c623\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Lifting Sling Assembly\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Certified lifting sling assembly 5T\",\n", - " \"sourceId\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"9266fab7-6edf-4411-a0a2-3074e322853f\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Differential pressure transmitter suction cooler\",\n", - " \"sourceId\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Pressure transmitter suction 1st stage compressor\",\n", - " \"sourceId\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Gas Detection System\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Combustible gas detection system area 23\",\n", - " \"sourceId\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Gas Export Line 24in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"24 inch gas export pipeline\",\n", - " \"sourceId\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"PH 3rd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"3rd stage centrifugal gas compressor\",\n", - " \"sourceId\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"PH 2nd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"2nd stage centrifugal gas compressor\",\n", - " \"sourceId\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Deluge Fire Protection Station A\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Deluge system fire protection station A\",\n", - " \"sourceId\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"6ead339e-d534-4778-a891-9312b2f6108e\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Helideck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Helideck platform structure\",\n", - " \"sourceId\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"ad443509-4fdb-4114-82a5-aa79bda20271\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"5 tonne overhead crane turbine hall\",\n", - " \"sourceId\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"UPS System Process Hall\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Uninterruptible power supply process hall\",\n", - " \"sourceId\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Gear Thrust Bearing Temp\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Temperature transmitter gear thrust bearing\",\n", - " \"sourceId\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"2nd Stage Suction Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Shell and tube gas cooler before 2nd stage\",\n", - " \"sourceId\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"8819a855-4229-4cb0-a975-967c6c3d935b\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Emergency shutdown valve 1st stage suction\",\n", - " \"sourceId\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"933aa789-5571-48bf-91a3-234f2a66522e\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Network Switch Cabinet A\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"description\": \"Main network switch cabinet area 23\",\n", - " \"sourceId\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"9e64206b-39d2-442f-bd80-4864ee58104d\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Drilling Derrick Assembly\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"description\": \"Main drilling derrick structure\",\n", - " \"sourceId\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Flow transmitter 1st stage compressor\",\n", - " \"sourceId\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Seawater Lift Pump A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Centrifugal seawater lift pump train A\",\n", - " \"sourceId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-KA-9102\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:22.932+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9102\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"PH 2nd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"2nd stage centrifugal gas compressor\",\n", - " \"sourceId\": \"23-KA-9102\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PSV-92550\",\n", - " \"version\": 46,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:22.932+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PSV-92550\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"1st Stage Discharge Safety Relief Valve\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Maintenance record 1st stage PSV\",\n", - " \"sourceId\": \"23-PSV-92550\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EA-9501\",\n", - " \"version\": 45,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EA-9501\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"1st Stage Discharge Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Maintenance record 1st stage discharge cooler\",\n", - " \"sourceId\": \"23-EA-9501\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EL-9701\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EL-9701\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Medium voltage motor for 1st stage compressor\",\n", - " \"sourceId\": \"23-EL-9701\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PT-92501\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PT-92501\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Pressure transmitter suction 1st stage compressor\",\n", - " \"sourceId\": \"23-PT-92501\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92501\",\n", - " \"version\": 42,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92501\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"1st Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Maintenance record for 1st stage ESDV\",\n", - " \"sourceId\": \"23-XV-92501\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-GT-9401\",\n", - " \"version\": 42,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:25.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-GT-9401\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", - " \"name\": \"Gas Turbine Generator A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Maintenance record gas turbine generator A\",\n", - " \"sourceId\": \"23-GT-9401\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PA-9201A\",\n", - " \"version\": 41,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:25.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PA-9201A\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Seawater Lift Pump A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Centrifugal seawater lift pump train A\",\n", - " \"sourceId\": \"23-PA-9201A\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-L-92701\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-18 19:19:32.744+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-L-92701\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"Gas Export Line 24in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"24 inch gas export pipeline\",\n", - " \"sourceId\": \"23-L-92701\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PCV-92538\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PCV-92538\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Anti-Surge Control Valve\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Anti-surge control valve 1st stage\",\n", - " \"sourceId\": \"23-PCV-92538\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92601\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92601\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"2nd Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Emergency shutdown valve 2nd stage suction\",\n", - " \"sourceId\": \"23-XV-92601\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EA-9502\",\n", - " \"version\": 36,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EA-9502\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"2nd Stage Discharge Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Shell and tube gas cooler before 2nd stage\",\n", - " \"sourceId\": \"23-EA-9502\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EA-9503\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EA-9503\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"Lube Oil Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Plate heat exchanger for compressor lube oil\",\n", - " \"sourceId\": \"23-EA-9503\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PA-9201B\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PA-9201B\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Seawater Lift Pump B\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Centrifugal seawater lift pump train B\",\n", - " \"sourceId\": \"23-PA-9201B\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-FT-92537\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FT-92537\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Flow transmitter 1st stage compressor\",\n", - " \"sourceId\": \"23-FT-92537\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-GT-9402\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-GT-9402\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Gas Turbine Generator B\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"GE LM2500 gas turbine generator set B\",\n", - " \"sourceId\": \"23-GT-9402\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-KA-9103\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9103\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"PH 3rd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"3rd stage centrifugal gas compressor\",\n", - " \"sourceId\": \"23-KA-9103\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-L-92501\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-L-92501\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"1st Stage Suction Line 16in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"16 inch suction line from scrubber to 1st stage compressor\",\n", - " \"sourceId\": \"23-L-92501\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-L-92601\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-L-92601\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"2nd Stage Suction Line 12in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"12 inch suction line to 2nd stage compressor\",\n", - " \"sourceId\": \"23-L-92601\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96115-01\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96115-01\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Gear Thrust Bearing Temperature\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Temperature transmitter gear thrust bearing\",\n", - " \"sourceId\": \"23-TT-96115-01\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23\",\n", - " \"version\": 34,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Area 23 Gas Compression\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"Gas compression area 23\",\n", - " \"sourceId\": \"VAL-PH-23\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TL-8602\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TL-8602\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Portable Gas Detector\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Portable multi-gas detector for confined space entry\",\n", - " \"sourceId\": \"23-TL-8602\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-DR-9902\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DR-9902\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Top Drive System\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"description\": \"Main top drive system\",\n", - " \"sourceId\": \"23-DR-9902\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EL-9703\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EL-9703\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"VFD 1st Stage Compressor\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Variable frequency drive for 1st stage compressor\",\n", - " \"sourceId\": \"23-EL-9703\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-IT-8302\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-IT-8302\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"PA/GA System Process Area\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"description\": \"Public address and general alarm system\",\n", - " \"sourceId\": \"23-IT-8302\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ME-9802\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ME-9802\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"5 tonne overhead crane turbine hall\",\n", - " \"sourceId\": \"23-ME-9802\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EN-8001\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EN-8001\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Electrical Equipment Room\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Main electrical equipment room enclosure\",\n", - " \"sourceId\": \"23-EN-8001\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EN-8002\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EN-8002\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"Instrument Equipment Room\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Instrument equipment room enclosure\",\n", - " \"sourceId\": \"23-EN-8002\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-IF-8201\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-IF-8201\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Platform Main Deck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Main deck structural module\",\n", - " \"sourceId\": \"23-IF-8201\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-IF-8202\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-IF-8202\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"Module Support Structure\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Compressor module support steel\",\n", - " \"sourceId\": \"23-IF-8202\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-MI-8402\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-MI-8402\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Scaffolding Kit A\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Standard scaffolding kit for maintenance\",\n", - " \"sourceId\": \"23-MI-8402\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EL-9702\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.984+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EL-9702\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"UPS System Process Hall\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Uninterruptible power supply process hall\",\n", - " \"sourceId\": \"23-EL-9702\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-DR-9901\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.984+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DR-9901\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Drilling Derrick Assembly\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"description\": \"Main drilling derrick structure\",\n", - " \"sourceId\": \"23-DR-9901\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HS-8103\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HS-8103\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Gas Detection System\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Combustible gas detection system area 23\",\n", - " \"sourceId\": \"23-HS-8103\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-IT-8301\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-IT-8301\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Network Switch Cabinet A\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"description\": \"Main network switch cabinet area 23\",\n", - " \"sourceId\": \"23-IT-8301\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-MI-8401\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-MI-8401\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Lifting Sling Assembly\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Certified lifting sling assembly 5T\",\n", - " \"sourceId\": \"23-MI-8401\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PA-9202\",\n", - " \"version\": 33,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PA-9202\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Chemical Injection Pump MEG\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Positive displacement diaphragm chemical injection pump\",\n", - " \"sourceId\": \"23-PA-9202\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-IF-8203\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-IF-8203\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Helideck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Helideck platform structure\",\n", - " \"sourceId\": \"23-IF-8203\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ME-9801\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ME-9801\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Process Hall Overhead Crane 10T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"10 tonne overhead crane process hall\",\n", - " \"sourceId\": \"23-ME-9801\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HS-8101\",\n", - " \"version\": 43,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HS-8101\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", - " \"name\": \"Deluge Fire Protection Station A\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Maintenance record deluge fire protection\",\n", - " \"sourceId\": \"23-HS-8101\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HS-8102\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HS-8102\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", - " \"name\": \"Emergency Shower Station\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Emergency shower and eye wash station\",\n", - " \"sourceId\": \"23-HS-8102\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TL-8601\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TL-8601\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", - " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Hydraulic torque wrench for flange bolting\",\n", - " \"sourceId\": \"23-TL-8601\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "]\n" - ] - } - ], - "source": [ - "# Reuse sub_tree_root if the ContainsAll cell above has been run; otherwise discover one.\n", - "try:\n", - " sub_tree_root\n", - "except NameError:\n", - " probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", - " sub_tree_root = None\n", - " for node in probe:\n", - " parent = (node.properties.get(asset_vid, {}) or {}).get(\"parent\")\n", - " if parent and parent.get(\"space\") and parent.get(\"externalId\"):\n", - " sub_tree_root = NodeId(parent[\"space\"], parent[\"externalId\"])\n", - " break\n", - " if sub_tree_root is None:\n", - " raise RuntimeError(\n", - " \"No Tag in INST_SP has a populated `parent` - cannot derive a subtree root.\"\n", - " )\n", - " print(f\"Using subtree root: {sub_tree_root}\")\n", - "\n", - "# Retrieve the root asset first to get its path (excluded from the timing below).\n", - "sub_tree_root_retrieved = client.data_modeling.instances.retrieve_nodes(\n", - " sub_tree_root,\n", - " sources=asset_vid,\n", - ")\n", - "\n", - "start_time = time.time()\n", - "sub_tree_nodes_prefix = client.data_modeling.instances.list(\n", - " sources=asset_vid,\n", - " filter=Prefix(\n", - " property=asset_vid.as_property_ref(\"path\"),\n", - " value=sub_tree_root_retrieved.properties.data[asset_vid][\"path\"],\n", - " ),\n", - " limit=500,\n", - ")\n", - "prefix_time = time.time() - start_time\n", - "print(f\"Prefix filter call took: {prefix_time:.3f} seconds\")\n", - "print(len(sub_tree_nodes_prefix))\n", - "print(sub_tree_nodes_prefix)" - ] - }, - { - "cell_type": "markdown", - "id": "62c0010b", - "metadata": {}, - "source": [ - "## Get multiple representations of an asset\n", - "\n", - "As you know, a single instance may have its properties in multiple views. When querying, listing or retrieval, it's possible to get multiple sources (views) along with their properties." - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "9c1a62b6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
value
spaceinst_location
external_idVAL-PH-23-WT
version35
last_updated_time2026-05-08 12:42:07.619000
created_time2026-03-18 13:14:46.171000
instance_typenode
path[{'space': 'inst_location', 'externalId': 'VAL...
root{'space': 'inst_location', 'externalId': 'VAL-...
parent{'space': 'inst_location', 'externalId': 'VAL-...
pathLastUpdatedTime2026-03-23T08:58:53.319752+00:00
nameWater Treatment System
tags[functional-location]
descriptionSeawater and chemical injection
sourceIdVAL-PH-23-WT
sourceContextcfihos_test
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "asset_external_id = \"VAL-PH-23-WT\"\n", - "space = INST_SP\n", - "client.data_modeling.instances.retrieve_nodes(\n", - " NodeId(space, asset_external_id),\n", - " # NOTE: `cdf_cdm` is not installed in this project. The original example added\n", - " # cognite_asset_vid and describable_vid here to retrieve the same node viewed\n", - " # through CDM. Add additional view IDs (e.g. asset_vid and any view that 'implements'\n", - " # it, like FunctionalLocation) here if you want multi-view hydration.\n", - " sources=[asset_vid],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "7ea3b8cc", - "metadata": {}, - "source": [ - "### The same call using query SDK" - ] - }, + "cells": [ + { + "cell_type": "markdown", + "id": "19587b30", + "metadata": {}, + "source": [ + "# Queries\n", + "This notebook contains a set of DMS query examples that can be used as templates." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "85f0feb4", + "metadata": {}, + "outputs": [], + "source": "import json\nimport os\nimport time\nfrom collections import defaultdict\nfrom pathlib import Path\n\nfrom cognite.client import CogniteClient, global_config\nfrom cognite.client.config import ClientConfig\nfrom cognite.client.credentials import OAuthClientCredentials\nfrom cognite.client.data_classes.data_modeling import (\n EdgeListWithCursor,\n InstanceSort,\n NodeId,\n NodeListWithCursor,\n ViewId,\n)\nfrom cognite.client.data_classes.data_modeling.query import (\n NodeResultSetExpression,\n Query,\n QueryResult,\n Select,\n SourceSelector,\n)\nfrom cognite.client.data_classes.filters import (\n And,\n ContainsAll,\n Equals,\n HasData,\n Nested,\n Prefix,\n SpaceFilter,\n)\nfrom cognite.client.exceptions import CogniteAPIError\nfrom dotenv import load_dotenv\nfrom tenacity import (\n retry,\n retry_if_exception,\n stop_after_attempt,\n wait_exponential_jitter,\n)" + }, + { + "cell_type": "markdown", + "id": "8ea0065b", + "metadata": {}, + "source": [ + "## Basic setup" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8655ee9b", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 56, - "id": "7802256c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-WT\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"name\": \"Water Treatment System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"Seawater and chemical injection\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "]\n" - ] - } - ], - "source": [ - "asset_external_id = \"VAL-PH-23-WT\"\n", - "# Note: SpaceFilter does not accept {\"parameter\": ...} - use Equals((\"node\", \"space\"), ...)\n", - "# if you need to parameterize space. See \"parent / children\" example below.\n", - "query = Query(\n", - " with_={ # FROM all Nodes WHERE space = INST_SP and externalId = CNY-AC\n", - " \"assets\": NodeResultSetExpression(\n", - " filter=And(\n", - " Equals([\"node\", \"externalId\"], value=asset_external_id),\n", - " SpaceFilter(space=INST_SP),\n", - " ),\n", - " ),\n", - " },\n", - " select={\n", - " # seeing the same instance through multiple views - request only the properties you need\n", - " \"assets\": Select(\n", - " [\n", - " SourceSelector(asset_vid, [\"name\", \"description\", \"tags\", \"parent\"]),\n", - " # CDM views (cognite_asset_vid, describable_vid) are not installed\n", - " # in this project. Add other project view IDs here if needed.\n", - " ],\n", - " ),\n", - " },\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(res[\"assets\"])\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading credentials from C:\\Users\\JanIngeBergseth\\OneDrive - Cognite AS\\Documents\\GitHub\\library\\.env\n", + "Client configured with alpha features enabled and SDK retries tuned (max_retries=10).\n" + ] + } + ], + "source": [ + "# Locate the .env file by walking up from the current working directory until we find one.\n", + "# Notebooks set cwd to wherever Jupyter was launched, so a fixed `parents[N]` is fragile.\n", + "def _find_env_file(start: Path | None = None) -> Path | None:\n", + " start = (start or Path.cwd()).resolve()\n", + " for candidate in [start, *start.parents]:\n", + " env_path = candidate / \".env\"\n", + " if env_path.is_file():\n", + " return env_path\n", + " return None\n", + "\n", + "\n", + "env_file = _find_env_file()\n", + "if env_file is None:\n", + " raise FileNotFoundError(\n", + " \"Could not find a .env file by walking up from cwd. \"\n", + " \"Place a .env at the repo root or set the CDF_* / IDP_* env vars in your shell.\"\n", + " )\n", + "print(f\"Loading credentials from {env_file}\")\n", + "load_dotenv(env_file, override=False)\n", + "\n", + "project = os.getenv(\"CDF_PROJECT\")\n", + "cluster = os.getenv(\"CDF_CLUSTER\")\n", + "client_id = os.getenv(\"CDF_CLIENT_ID\") or os.getenv(\"IDP_CLIENT_ID\")\n", + "client_secret = os.getenv(\"CDF_CLIENT_SECRET\") or os.getenv(\"IDP_CLIENT_SECRET\")\n", + "tenant_id = os.getenv(\"CDF_TENANT_ID\") or os.getenv(\"IDP_TENANT_ID\")\n", + "base_url = os.getenv(\"CDF_BASE_URL\") or os.getenv(\"CDF_URL\") or (f\"https://{cluster}.cognitedata.com\" if cluster else None)\n", + "\n", + "missing = [\n", + " name for name, val in {\n", + " \"CDF_PROJECT\": project,\n", + " \"CDF_CLIENT_ID / IDP_CLIENT_ID\": client_id,\n", + " \"CDF_CLIENT_SECRET / IDP_CLIENT_SECRET\": client_secret,\n", + " \"CDF_TENANT_ID / IDP_TENANT_ID\": tenant_id,\n", + " \"CDF_BASE_URL / CDF_URL / CDF_CLUSTER\": base_url,\n", + " }.items()\n", + " if not val\n", + "]\n", + "if missing:\n", + " raise RuntimeError(\n", + " f\"Missing required environment variables: {', '.join(missing)}.\\n\"\n", + " f\"Checked .env: {env_file}\\n\"\n", + " \"Make sure these are defined there or exported in your shell.\"\n", + " )\n", + "\n", + "credentials = OAuthClientCredentials(\n", + " token_url=f\"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token\",\n", + " client_id=client_id,\n", + " client_secret=client_secret,\n", + " scopes=[f\"{base_url}/.default\"],\n", + ")\n", + "\n", + "# Increase SDK-level retry budget so transient 429/5xx are handled before they reach user code.\n", + "# The SDK already retries 429 and 5xx with backoff; we just give it more headroom.\n", + "global_config.max_retries = 10\n", + "global_config.max_retry_backoff = 30\n", + "global_config.disable_pypi_version_check = True\n", + "\n", + "client = CogniteClient(ClientConfig(\n", + " client_name=\"cdf-query-examples\",\n", + " project=project,\n", + " credentials=credentials,\n", + " base_url=base_url,\n", + "))\n", + "\n", + "# Merge (don't overwrite) headers so SDK defaults like x-cdp-sdk / User-Agent are preserved.\n", + "# cdf-version: alpha unlocks alpha features on /query (e.g. the \"debug\" envelope used below).\n", + "client.config.headers = {**(client.config.headers or {}), \"cdf-version\": \"alpha\"}\n", + "print(\"Client configured with alpha features enabled and SDK retries tuned (max_retries=10).\")" + ] + }, + { + "cell_type": "markdown", + "id": "0d88508a", + "metadata": {}, + "source": [ + "# Retry helpers (408 / 429 / 5xx)\n", + "\n", + "These wrappers handle the two failure modes you'll hit most often when running DMS queries:\n", + "\n", + "- **408 Request Timeout** — usually caused by oversized payloads (`properties=[\"*\"]`), high `limit`, or expensive joins. The right long-term fix is to narrow the query; the retry only buys time.\n", + "- **429 Too Many Requests** — token-bucket throttling. Exponential backoff with jitter clears it.\n", + "\n", + "The decorator below retries on `{408, 425, 429, 500, 502, 503, 504}` with jittered exponential backoff. The Cognite SDK also retries internally (configured above via `global_config`); these wrappers add a second layer for the user-facing call." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1d29ce18", + "metadata": {}, + "outputs": [], + "source": [ + "RETRYABLE_CODES = {408, 425, 429, 500, 502, 503, 504}\n", + "\n", + "\n", + "def is_retryable_exception(e: BaseException) -> bool:\n", + " \"\"\"Retry on transient transport / throttling errors.\"\"\"\n", + " return isinstance(e, CogniteAPIError) and e.code in RETRYABLE_CODES\n", + "\n", + "\n", + "retry_cognite = retry(\n", + " reraise=True,\n", + " stop=stop_after_attempt(5),\n", + " retry=retry_if_exception(is_retryable_exception),\n", + " wait=wait_exponential_jitter(initial=1, max=30, jitter=2),\n", + ")\n", + "\n", + "\n", + "@retry_cognite\n", + "def run_query(client: CogniteClient, query: Query) -> QueryResult:\n", + " \"\"\"Run a /query against the data model with retry on 408/429/5xx.\"\"\"\n", + " return client.data_modeling.instances.query(query=query)\n", + "\n", + "\n", + "@retry_cognite\n", + "def run_sync(client: CogniteClient, query: Query) -> QueryResult:\n", + " \"\"\"Run a /sync (cursor-based) query with retry on 408/429/5xx.\"\"\"\n", + " return client.data_modeling.instances.sync(query=query)\n", + "\n", + "\n", + "def log_api_error(e: CogniteAPIError) -> None:\n", + " \"\"\"Print enough context to correlate with CDF backend logs.\"\"\"\n", + " print(f\"CogniteAPIError code={e.code} x_request_id={getattr(e, 'x_request_id', None)}: {e.message}\")" + ] + }, + { + "cell_type": "markdown", + "id": "0dd34662", + "metadata": {}, + "source": [ + "# Setup\n", + "\n", + "Define the instance space, the model space, the model version, and all `ViewId`s used by the queries below. Centralising these constants makes it trivial to retarget the notebook at a different deployment." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "949949e1", + "metadata": {}, + "outputs": [], + "source": [ + "# Target model in this project: dm_dom_oil_and_gas : dm_oil_and_gas_domain_model / v1\n", + "# Adjust INST_SP if your instance space differs from the model space.\n", + "INST_SP = \"inst_location\" # instance space\n", + "MODEL_SP_CDM = \"cdf_cdm\" # model space (where views/containers live)\n", + "MODEL_SP_IDM = \"cdf_idm\" # model space (where views/containers live)\n", + "MODEL_VERSION = \"v1\"\n", + "\n", + "# Project views (resolved from `client.data_modeling.views.list(space=MODEL_SP)`).\n", + "# `Tag` is this model's \"asset\" equivalent (functional tag). There is no Activity view -\n", + "# closest analogues are WorkOrder / WorkOrderOperation.\n", + "asset_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteAsset\", version=MODEL_VERSION)\n", + "ts_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteTimeSeries\", version=MODEL_VERSION)\n", + "file_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteFile\", version=MODEL_VERSION)\n", + "eq_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteEquipment\", version=MODEL_VERSION)\n", + "wo_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteMaintenanceOrder\", version=MODEL_VERSION)\n", + "wo_op_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteOperation\", version=MODEL_VERSION)\n", + "notification_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteNotification\", version=MODEL_VERSION)\n" + ] + }, + { + "cell_type": "markdown", + "id": "9f537673", + "metadata": {}, + "source": [ + "Optional sanity check: list all views in the model space." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "9e904032", + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "id": "0c6dea9a", - "metadata": {}, - "source": [ - "## Get parent and/or children of an asset\n", - "\n", - "### Note that you can use this logic for any kind of **single** direct relations (and their reverse). For example, you can retrieve the type of the asset (see below)\n", - "\n", - "This way, you can traverse a graph using direct relations" - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "asset_vid -> cdf_cdm:CogniteAsset/v1 (23 properties)\n", + "ts_vid -> cdf_cdm:CogniteTimeSeries/v1 (19 properties)\n", + "file_vid -> cdf_cdm:CogniteFile/v1 (18 properties)\n", + "eq_vid -> cdf_cdm:CogniteEquipment/v1 (18 properties)\n", + "wo_vid -> cdf_idm:CogniteMaintenanceOrder/v1 (24 properties)\n", + "wo_op_vid -> cdf_idm:CogniteOperation/v1 (27 properties)\n", + "notification_vid -> cdf_idm:CogniteNotification/v1 (21 properties)\n" + ] + } + ], + "source": [ + "# Inspect the ViewIds defined in the Setup cell. For each one, retrieve the full\n", + "# view definition from CDF and print its properties so you know what's available\n", + "# for filter / select / sort. Driven by the variables in Setup so renaming a view\n", + "# in one place is enough.\n", + "view_ids = {\n", + " \"asset_vid\": asset_vid,\n", + " \"ts_vid\": ts_vid,\n", + " \"file_vid\": file_vid,\n", + " \"eq_vid\": eq_vid,\n", + " \"wo_vid\": wo_vid,\n", + " \"wo_op_vid\": wo_op_vid,\n", + " \"notification_vid\": notification_vid,\n", + "}\n", + "\n", + "retrieved = client.data_modeling.views.retrieve(list(view_ids.values()))\n", + "retrieved_by_id = {(v.space, v.external_id, v.version): v for v in retrieved}\n", + "\n", + "# Cache property metadata per view for downstream query-design / debugging.\n", + "# Schema: view_properties[var_name] = {prop_name: {\"type\": ..., \"is_list\": bool,\n", + "# \"is_direct_relation\": bool, \"is_reverse_direct_relation\": bool,\n", + "# \"container\": (space, external_id) | None}}\n", + "view_properties: dict[str, dict[str, dict]] = {}\n", + "\n", + "for var_name, vid in view_ids.items():\n", + " view = retrieved_by_id.get((vid.space, vid.external_id, vid.version))\n", + " if view is None:\n", + " print(f\"{var_name} -> {vid.space}:{vid.external_id}/{vid.version} (NOT FOUND)\")\n", + " view_properties[var_name] = {}\n", + " continue\n", + "\n", + " props: dict[str, dict] = {}\n", + " for prop_name, prop in view.properties.items():\n", + " prop_type = getattr(prop, \"type\", None)\n", + " cls_name = prop.__class__.__name__\n", + " container = getattr(prop, \"container\", None)\n", + " props[prop_name] = {\n", + " \"type\": str(prop_type) if prop_type is not None else cls_name,\n", + " \"is_list\": getattr(prop, \"list\", False),\n", + " \"is_direct_relation\": cls_name == \"MappedPropertyApply\" and \"direct\" in str(prop_type).lower()\n", + " or \"direct\" in cls_name.lower(),\n", + " \"is_reverse_direct_relation\": \"ReverseDirectRelation\" in cls_name,\n", + " \"container\": (container.space, container.external_id) if container is not None else None,\n", + " }\n", + " view_properties[var_name] = props\n", + " print(f\"{var_name} -> {vid.space}:{vid.external_id}/{vid.version} ({len(props)} properties)\")\n", + "\n", + "# Quick-access helpers for query design:\n", + "# view_properties[\"asset_vid\"][\"parent\"] -> dict of metadata\n", + "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_direct_relation\"]]\n", + "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_reverse_direct_relation\"]]\n", + "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_list\"]]\n" + ] + }, + { + "cell_type": "markdown", + "id": "b4905a9d", + "metadata": {}, + "source": [ + "# Assets\n", + "## General asset queries" + ] + }, + { + "cell_type": "markdown", + "id": "95db1bc4", + "metadata": {}, + "source": [ + "### List assets and sort based on their externalId\n", + "\n", + "Listing assets works almost the same as in the case of legacy assets. The main difference is the **sources** argument, that allows to choose the properties that will be fetched, by selecting a view (or a list of views).\n", + "\n", + "You can sort/filter either by using a property specified within a View or node/edge registry.\n", + "Sorting by created/updated time is not allowed as of now, due to performance considerations (too much reindexing on every instance update)." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "3ddb499f", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 58, - "id": "cb9d9653", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "asset: [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XX-9105\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", - " },\n", - " \"name\": \"23-XX-9105\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - 1ST STAGE SUCTION/DISCHARGE COOLER SKID\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "]\n", - "parent: [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-1ST STAGE COMPRESSION-PH\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"230900\"\n", - " },\n", - " \"name\": \"23-1ST STAGE COMPRESSION-PH\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"1ST STAGE COMPRESSION ON PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "]\n", - "children: [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"90-MX-9245\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XX-9105\"\n", - " },\n", - " \"name\": \"90-MX-9245\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - MONORAIL OVER WALKWAY FOR EQUIPMENT ON SKID 23-XX-9105\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HA-9103\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XX-9105\"\n", - " },\n", - " \"name\": \"23-HA-9103\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - 1ST STAGE SUCTION COOLER\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HA-9114\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XX-9105\"\n", - " },\n", - " \"name\": \"23-HA-9114\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - 1ST STAGE DISCHARGE COOLER 1\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HA-9115\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XX-9105\"\n", - " },\n", - " \"name\": \"23-HA-9115\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - 1ST STAGE DISCHARGE COOLER 2\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "] (count=4)\n", - "further_children: [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PDT-92501\",\n", - " \"version\": 30,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Differential pressure transmitter suction cooler\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92609\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-HV-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92613\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-PSV-92613\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92607B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-TT-92607B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92748\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-XV-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH OFFGAS TO 1STSTGSUCTCOOLER\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDT-92506\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PDT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDT-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-PDT-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL CM\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-FT-92512\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-FT-92512\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HV-92545\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-HV-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL YSV OUTLET\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PDT-92502\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-PDT-92502\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL TUBES\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PDT-92602\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-PDT-92602\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1ST STG DISCH GAS COOLERS\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PV-92538\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-PV-92538\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGCOMP SUCTION STV\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92502\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-TT-92502\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92603\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-TT-92603\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL GAS OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ESDV-92551B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-ESDV-92551B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCHCLR GAS OUT EQ\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PT-92504\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-PT-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-92604B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-TE-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PT-92512\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-PT-92512\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92512\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-TT-92512\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92609\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-PT-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL CM OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-TT-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCLR COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TV-92504\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-TV-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL CM IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TV-92604B\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-TV-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSV-92545\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-YSV-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCHCOOLER B/D\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92510S\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PSV-92510S\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92514\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PSV-92514\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1ST STG SUCT COOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92607A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-TT-92607A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ESDV-92501A\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-ESDV-92501A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCLR GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92510-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-HV-92510-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL PSV IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92510-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-HV-92510-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL PSV OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92612\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-PSV-92612\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92608\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-PT-92608\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL CM OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FT-92506\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-FT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ESDV-92501B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-ESDV-92501B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCLR GAS IN EQUAL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-FV-92543\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-FV-92543\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGCOMP ANTI-SURGE\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ESDV-92551A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-ESDV-92551A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCHCLR GAS OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92509\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-HV-92509\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PT-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-TT-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED SPLY\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-92604A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-TE-92604A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSV-92445\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-YSV-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FE-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-FE-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92515\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PSV-92515\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1ST STG SUCT COOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92506\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-TT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCLR COOLMED SPLY\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "] (count=44)\n", - "type: []\n" - ] - } - ], - "source": [ - "# asset_eid = \"WLL-6080740225\"\n", - "asset_eid = \"23-XX-9105\"\n", - "# Tip: parameterise space with Equals((\"node\",\"space\"), {\"parameter\": \"space\"}) - SpaceFilter\n", - "# does not currently accept {\"parameter\": \"...\"}.\n", - "ASSET_PROPS = [\"name\", \"description\", \"source\", \"parent\", \"tags\"]\n", - "query = Query(\n", - " with_={ # FROM all Nodes WHERE space = INST_SP and externalId = CNY-AC\n", - " \"asset\": NodeResultSetExpression(\n", - " filter=And(\n", - " Equals(property=(\"node\", \"externalId\"), value=asset_eid),\n", - " Equals(property=(\"node\", \"space\"), value={\"parameter\": \"space\"}),\n", - " ),\n", - " ),\n", - " \"parent\": NodeResultSetExpression(\n", - " from_=\"asset\",\n", - " through=asset_vid.as_property_ref(\"parent\"),\n", - " direction=\"outwards\",\n", - " ),\n", - " \"children\": NodeResultSetExpression(\n", - " from_=\"asset\",\n", - " through=asset_vid.as_property_ref(\"parent\"),\n", - " direction=\"inwards\",\n", - " ),\n", - " \"further_children\": NodeResultSetExpression(\n", - " from_=\"children\",\n", - " through=asset_vid.as_property_ref(\"parent\"),\n", - " direction=\"inwards\",\n", - " ),\n", - " \"type\": NodeResultSetExpression(\n", - " from_=\"asset\",\n", - " through=asset_vid.as_property_ref(\"type\"),\n", - " direction=\"outwards\",\n", - " ),\n", - " },\n", - " select={\n", - " \"asset\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", - " \"parent\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", - " \"children\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", - " \"further_children\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", - " \"type\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", - " },\n", - " parameters={\"space\": INST_SP},\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(f\"asset: {res['asset']}\")\n", - " print(f\"parent: {res['parent']}\")\n", - " print(f\"children: {res['children']} (count={len(res['children'])})\")\n", - " print(f\"further_children: {res['further_children']} (count={len(res['further_children'])})\")\n", - " print(f\"type: {res['type']}\")\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n", - "\n" - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "Returned 500 Tag instances.\n", + "Spaces seen in this batch: {'inst_location': 500}\n", + "\n", + "Sample Tag: space='inst_location' externalId='f4af554c-57aa-4043-ad2b-263aa9e34485'\n", + "{\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Seawater Lift Pump A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Centrifugal seawater lift pump train A\",\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"sourceId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "# Listing instances through a view. The `sources` argument selects which view's\n", + "# properties get returned; sort/filter can reference any property on that view\n", + "# or the node/edge registry (e.g. (\"node\", \"externalId\")). Sorting on\n", + "# createdTime/lastUpdatedTime is not allowed.\n", + "#\n", + "# We omit `space=` so we discover where Tags actually live, then print the\n", + "# distribution of spaces so you can pin INST_SP correctly. The data\n", + "# (instance) space is usually different from the model space.\n", + "assets = client.data_modeling.instances.list(\n", + " sources=asset_vid,\n", + " limit=500,\n", + " # Equals filter against a single text property on the view.\n", + " filter=Equals(\n", + " property=asset_vid.as_property_ref(\"sourceContext\"),\n", + " value=\"cfihos_test\",\n", + " ),\n", + " sort=InstanceSort(property=[\"node\", \"externalId\"], direction=\"descending\"),\n", + ")\n", + "print(f\"Returned {len(assets)} Tag instances.\")\n", + "\n", + "from collections import Counter\n", + "\n", + "space_counts = Counter(a.space for a in assets)\n", + "print(\"Spaces seen in this batch:\", dict(space_counts))\n", + "if assets:\n", + " sample = assets[0]\n", + " print(f\"\\nSample Tag: space={sample.space!r} externalId={sample.external_id!r}\")\n", + " print(sample)\n", + "\n", + "# Once you know the right instance space, set INST_SP in the Setup cell and add\n", + "# `space=INST_SP` back here:\n", + "# filter=Equals([\"node\", \"space\"], value=INST_SP)\n", + "# ...or filter by a direct relation (note the {space, externalId} value shape):\n", + "# filter=Equals(\n", + "# property=asset_vid.as_property_ref(\"parent\"),\n", + "# value={\"space\": INST_SP, \"externalId\": \"SITE_OSL\"},\n", + "# )" + ] + }, + { + "cell_type": "markdown", + "id": "df281e86", + "metadata": {}, + "source": [ + "# Search endpoint\n", + "\n", + "Search is tokenized full-text lookup (not regex; see the docs for the exact tokenization rules).\n", + "\n", + "This endpoint targets the Elasticsearch backend where *every text property is indexed*, so it is typically more performant than `/query` for keyword-style lookups.\n", + "\n", + "Caveat: search can only match `text`-typed properties." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "69c9c180", + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "id": "d108767b", - "metadata": {}, - "source": [ - "## Using the Nested filter\n", - "\n", - "Nested filter allows to use property of the directly related View to filter the instances. The filter can be applied only to single direct relations. " - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "Searching Tag for 'Electrical Distributi' (derived from sample Tag 'Electrical Distribution')\n", + "Hits: 1\n", + "{\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-EL\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Electrical Distribution\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"Power generation and distribution\",\n", + " \"sourceId\": \"VAL-PH-23-EL\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "# Pick a real name from the data first - hardcoded demo values from another\n", + "# project (like \"CNY-AC\") will silently return zero hits.\n", + "sample = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=5)\n", + "if not sample:\n", + " raise RuntimeError(\"No Tag instances exist - ingest data or query a different view.\")\n", + "\n", + "sample_name = None\n", + "for node in sample:\n", + " props = node.properties.get(asset_vid, {})\n", + " if props.get(\"name\"):\n", + " sample_name = props[\"name\"]\n", + " break\n", + "\n", + "# Search by a substring of a real name (drop the last 2 chars to make it a partial match).\n", + "search_term = (sample_name or \"\")[:-2] or sample_name\n", + "print(f\"Searching Tag for {search_term!r} (derived from sample Tag {sample_name!r})\")\n", + "\n", + "results = client.data_modeling.instances.search(\n", + " view=asset_vid,\n", + " space=INST_SP,\n", + " limit=20,\n", + " sort=InstanceSort(property=asset_vid.as_property_ref(\"name\"), direction=\"descending\"),\n", + " query=search_term,\n", + ")\n", + "print(f\"Hits: {len(results)}\")\n", + "for r in results[:5]:\n", + " print(r)" + ] + }, + { + "cell_type": "markdown", + "id": "af98bf8e", + "metadata": {}, + "source": [ + "## Iterative listing\n", + "\n", + "Using instances API you can fetch the instances in batches, to avoid timeouts and reduce memory load" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "ffee642e", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "id": "e313608d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "asset (count=98):\n", - " VAL-PH-23-EL name='Electrical Distribution'\n", - " VAL-PH-23-GC name='Gas Compression System'\n", - " VAL-PH-23-UT name='Utilities System'\n", - " VAL-PH-23-WT name='Water Treatment System'\n", - " VAL-PH-48 name='Area 48 Subsea Systems'\n", - " 626221d1-e8f3-4761-97bd-239e013c7f75 name='Module Support Structure'\n", - " 6b0eb178-2c4f-4fca-901b-2c59bf812582 name='Instrument Equipment Room'\n", - " a4b91d72-0d1b-4902-a8d4-98dfcbeabf70 name='1st Stage Safety Relief Valve'\n", - " cd5759fc-0fa0-4ce3-9831-47529722f738 name='2nd Stage Suction ESDV'\n", - " 0192bf8a-c9a6-4f47-b491-208e6c11e351 name='1st Stage Suction Line 16in'\n", - " 1d338ea3-7841-43fc-afe6-702966cbbffc name='Seawater Lift Pump B'\n", - " 4d839ff3-3a8f-4258-81d5-08409cdf2475 name='Portable Gas Detector'\n", - " 6767827c-f362-4b04-b303-fb5669ecab2b name='Subsea Manifold'\n", - " a86482db-1947-43e7-9781-67c6bc38ad09 name='MV Motor 1st Stage Compressor Drive'\n", - " e3e89763-dd36-4823-9738-17d9a4fecd02 name='PA/GA System Process Area'\n", - " 056df394-acc1-4b71-9897-0053e2aec3b0 name='Hydraulic Torque Wrench 3/4in'\n", - " 2a804545-b201-4985-822f-45c14ac0d1a5 name='Electrical Equipment Room'\n", - " 423da2b8-3e47-4e1b-8139-c773f19508b2 name='Subsea Christmas Tree Well-1'\n", - " 51afd982-edb1-4b71-a157-91e3a0d8085f name='1st Stage Discharge Cooler'\n", - " 8e337b6f-be72-416e-bef0-3308975ae627 name='VFD 1st Stage Compressor'\n", - " af455e61-124c-46e9-9c9d-e962555a917c name='1st Stage Performance Control Valve'\n", - " e43970f2-a955-44c7-beac-8f66eb2ae85d name='Lube Oil Cooler'\n", - " 3ced891b-185a-4be3-be88-79ff4410ee8c name='PH 1st Stage Gas Compressor'\n", - " b1fc60ab-b304-4d80-a737-ec43765620c5 name='Platform Main Deck'\n", - " c754af3e-9ad6-40fc-95aa-4ab7e12655be name='2nd Stage Suction Line 12in'\n", - " 238afe07-ae83-4b30-998c-d6e58b5c07c4 name='Emergency Shower Station'\n", - " a8c58534-b905-4f84-b987-5e7a4881f26b name='Top Drive System'\n", - " b3a5cc09-85d8-4196-a95f-61e2db77b49a name='1st Stage Scrubber Level Transmitter'\n", - " d271d97b-d105-49c2-977d-ec812b290554 name='Scaffolding Kit A'\n", - " dda44393-0a89-4654-a84f-af33ba19b93a name='Chemical Injection Pump'\n", - " 8b16b072-2c1c-4cd1-a13b-a70821d770e4 name='Process Hall Overhead Crane 10T'\n", - " a98260bd-c718-446c-901a-913809d4f095 name='Gas Turbine Generator B'\n", - " df052853-f39c-405b-a275-33768b91c623 name='Gas Turbine Generator A'\n", - " 5e0ae159-18b3-4970-88b7-9dd8995fcc5e name='Lifting Sling Assembly'\n", - " 9266fab7-6edf-4411-a0a2-3074e322853f name='1st Stage Suction Cooler dP Transmitter'\n", - " 94ccd3cc-48de-46d5-a9ec-890a78c5d716 name='1st Stage Suction Pressure Transmitter'\n", - " c39906ea-0a81-4cb0-a002-9658b8846a38 name='Subsea Control Module A'\n", - " 04d754eb-8ddd-4ea4-9b01-82365b85cfc2 name='Gas Detection System'\n", - " 0912fe96-a0f5-4fec-b3d8-8446cd03e230 name='Gas Export Line 24in'\n", - " 839e57a0-6765-4bd4-b7d7-1dfde9c1d969 name='PH 3rd Stage Gas Compressor'\n", - " c9a063b9-f0d1-433b-8c80-bdaaf1d949f5 name='PH 2nd Stage Gas Compressor'\n", - " 27f56b30-4aa3-4db9-8cdd-6d5ba4d84566 name='Deluge Fire Protection Station A'\n", - " 6ead339e-d534-4778-a891-9312b2f6108e name='Helideck'\n", - " ad443509-4fdb-4114-82a5-aa79bda20271 name='Turbine Hall Overhead Crane 5T'\n", - " ccdafea7-5bf0-4d40-924e-3f786b44e9a3 name='UPS System Process Hall'\n", - " 47d4a39c-7c0b-46bb-a290-c47a7528dfef name='1st Stage Gear Thrust Bearing Temp'\n", - " 682ec198-fcb1-4d86-b50d-34b1a8f48fe7 name='2nd Stage Suction Cooler'\n", - " 8819a855-4229-4cb0-a975-967c6c3d935b name='1st Stage Suction ESDV'\n", - " 933aa789-5571-48bf-91a3-234f2a66522e name='Network Switch Cabinet A'\n", - " 9e64206b-39d2-442f-bd80-4864ee58104d name='Drilling Derrick Assembly'\n", - " d28a5c2c-2800-4370-8c77-6647a45b1cb0 name='1st Stage Compressor Flow Transmitter'\n", - " f4af554c-57aa-4043-ad2b-263aa9e34485 name='Seawater Lift Pump A'\n", - " 23-KA-9102 name='PH 2nd Stage Gas Compressor'\n", - " 23-PSV-92550 name='1st Stage Discharge Safety Relief Valve'\n", - " 23-EA-9501 name='1st Stage Discharge Cooler'\n", - " 23-EL-9701 name='MV Motor 1st Stage Compressor Drive'\n", - " 23-PT-92501 name='1st Stage Suction Pressure Transmitter'\n", - " 23-XV-92501 name='1st Stage Suction ESDV'\n", - " 48-SU-8501 name='Subsea Control Module A'\n", - " 23-GT-9401 name='Gas Turbine Generator A'\n", - " 23-PA-9201A name='Seawater Lift Pump A'\n", - " 23-L-92701 name='Gas Export Line 24in'\n", - " 48-SU-8502 name='Subsea Christmas Tree Well-1'\n", - " 48-SU-8503 name='Subsea Manifold'\n", - " 23-PCV-92538 name='1st Stage Anti-Surge Control Valve'\n", - " 23-XV-92601 name='2nd Stage Suction ESDV'\n", - " 23-EA-9502 name='2nd Stage Discharge Cooler'\n", - " 23-EA-9503 name='Lube Oil Cooler'\n", - " 23-PA-9201B name='Seawater Lift Pump B'\n", - " 23-FT-92537 name='1st Stage Compressor Flow Transmitter'\n", - " 23-GT-9402 name='Gas Turbine Generator B'\n", - " 23-KA-9103 name='PH 3rd Stage Gas Compressor'\n", - " 23-L-92501 name='1st Stage Suction Line 16in'\n", - " 23-L-92601 name='2nd Stage Suction Line 12in'\n", - " 23-TT-96115-01 name='1st Stage Gear Thrust Bearing Temperature'\n", - " VAL-PH-23 name='Area 23 Gas Compression'\n", - " 23-TL-8602 name='Portable Gas Detector'\n", - " 23-DR-9902 name='Top Drive System'\n", - " 23-EL-9703 name='VFD 1st Stage Compressor'\n", - " 23-IT-8302 name='PA/GA System Process Area'\n", - " 23-ME-9802 name='Turbine Hall Overhead Crane 5T'\n", - " 23-EN-8001 name='Electrical Equipment Room'\n", - " 23-EN-8002 name='Instrument Equipment Room'\n", - " 23-IF-8201 name='Platform Main Deck'\n", - " 23-IF-8202 name='Module Support Structure'\n", - " 23-MI-8402 name='Scaffolding Kit A'\n", - " 23-EL-9702 name='UPS System Process Hall'\n", - " 23-DR-9901 name='Drilling Derrick Assembly'\n", - " 23-HS-8103 name='Gas Detection System'\n", - " 23-IT-8301 name='Network Switch Cabinet A'\n", - " 23-MI-8401 name='Lifting Sling Assembly'\n", - " 23-PA-9202 name='Chemical Injection Pump MEG'\n", - " 23-IF-8203 name='Helideck'\n", - " 23-ME-9801 name='Process Hall Overhead Crane 10T'\n", - " 23-HS-8101 name='Deluge Fire Protection Station A'\n", - " 23-HS-8102 name='Emergency Shower Station'\n", - " 23-TL-8601 name='Hydraulic Torque Wrench 3/4in'\n", - " 230900 name='230900'\n", - "equipment (count=20):\n", - " ab0ea3c4-b606-4e41-bad9-2ad0fb432c41 name='PH 1st Stage Gas Compressor'\n", - " cc3e885d-0b7f-4fc4-923d-510b40981e1d name='PH 2nd Stage Gas Compressor'\n", - " eff69eed-b9e9-427e-bf15-aa3cf93c43fb name='1st Stage Safety Relief Valve'\n", - " 2191ae23-2f42-4ccf-9060-29c4ddf67290 name='1st Stage Discharge Cooler'\n", - " 1b8f2e53-31aa-4eb8-b607-5383bfdd0c9f name='1st Stage Suction Pressure Transmitter'\n", - " 4ac9c8c0-1f44-4b21-bf2d-35614dcf7947 name='1st Stage Suction ESDV'\n", - " 89b47807-1a43-4f79-847e-d0633e0b7f9f name='MV Motor 1st Stage Compressor Drive'\n", - " efdeed77-abfe-4a63-a5e9-e87d874063d3 name='Subsea Control Module A'\n", - " ec68ec70-ea1c-409d-a73c-62819123eb3e name='Gas Turbine Generator A'\n", - " fe996ac6-9669-4853-a9ea-779e4ca40360 name='Seawater Lift Pump A'\n", - " EQ-VA-9301 name='1st Stage Suction ESDV'\n", - " EQ-KA-9102 name='PH 2nd Stage Gas Compressor'\n", - " EQ-PA-9201A name='Seawater Lift Pump A'\n", - " EQ-GT-9401 name='Gas Turbine Generator A'\n", - " EQ-PT-92501 name='1st Stage Suction Pressure Transmitter'\n", - " EQ-SU-8501 name='Subsea Control Module A'\n", - " EQ-EL-9701 name='MV Motor 1st Stage Compressor Drive'\n", - " EQ-KA-9101 name='PH 1st Stage Gas Compressor'\n", - " EQ-PSV-92550 name='1st Stage Safety Relief Valve'\n", - " EQ-EA-9501 name='1st Stage Discharge Cooler'\n" - ] - } - ], - "source": [ - "query = Query(\n", - " with_={\n", - " \"asset\": NodeResultSetExpression(\n", - " # Tags whose PARENT TAG has 'functional-location' in its tags property.\n", - " # Why parent? Nested can only filter through single-valued direct relations.\n", - " # On Tag, `parent` is the only single DR to another Tag.\n", - " filter=Nested(\n", - " scope=asset_vid.as_property_ref(\"parent\"),\n", - " filter=ContainsAll(\n", - " property=asset_vid.as_property_ref(\"tags\"),\n", - " values=[\"functional-location\"],\n", - " ),\n", - " ),\n", - " limit=500,\n", - " ),\n", - " \"equipment\": NodeResultSetExpression(\n", - " # FROM all Equipment WHERE asset (a direct relation to a Tag) has sourceContext == \"cfihos_test\"\n", - " filter=Nested(\n", - " scope=eq_vid.as_property_ref(\"asset\"),\n", - " filter=Equals(\n", - " property=asset_vid.as_property_ref(\"sourceContext\"),\n", - " value=\"cfihos_test\",\n", - " ),\n", - " ),\n", - " limit=500,\n", - " ),\n", - " },\n", - " select={\n", - " \"asset\": Select(\n", - " [SourceSelector(source=asset_vid, properties=[\"name\", \"description\", \"tags\", \"parent\"])]\n", - " ),\n", - " \"equipment\": Select(\n", - " [SourceSelector(source=eq_vid, properties=[\"name\", \"description\", \"tags\", \"asset\"])]\n", - " ),\n", - " },\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(f\"asset (count={len(res['asset'])}):\")\n", - " for n in res['asset']:\n", - " props = n.properties.get(asset_vid, {}) or {}\n", - " print(f\"ExId={n.external_id} name={props.get('name')!r}\")\n", - " print(f\"equipment (count={len(res['equipment'])}):\")\n", - " for n in res['equipment']:\n", - " props = n.properties.get(eq_vid, {}) or {}\n", - " print(f\"ExId={n.external_id} name={props.get('name')!r}\")\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "sourceContext distribution (top 5): [('cfihos_test', 198), (None, 2)]\n", + "Iterating Tags with sourceContext == 'cfihos_test'\n", + "Fetching batch 1\n", + "500\n", + "Fetching batch 2\n", + "500\n", + "Fetching batch 3\n", + "201\n" + ] + } + ], + "source": [ + "# Stream the full result set in batches. Set limit=None for unbounded iteration\n", + "# (this example caps at 20000 only to keep the demo fast - remove for production use).\n", + "# chunk_size controls page size; 500-1000 is typically a good compromise between\n", + "# round-trip overhead and the 408 risk that comes with huge per-page payloads.\n", + "\n", + "# Pick a real sourceContext value from the data instead of hardcoding one.\n", + "from collections import Counter\n", + "\n", + "probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", + "source_contexts = Counter(\n", + " (node.properties.get(asset_vid, {}) or {}).get(\"sourceContext\")\n", + " for node in probe\n", + ")\n", + "print(\"sourceContext distribution (top 5):\", source_contexts.most_common(5))\n", + "\n", + "source_context_value = next(\n", + " (val for val, _ in source_contexts.most_common() if val), None\n", + ")\n", + "if source_context_value is None:\n", + " print(\"No sourceContext values found - iterating without a filter instead.\")\n", + " extra_filter = None\n", + "else:\n", + " print(f\"Iterating Tags with sourceContext == {source_context_value!r}\")\n", + " extra_filter = Equals(\n", + " property=asset_vid.as_property_ref(\"sourceContext\"),\n", + " value=source_context_value,\n", + " )\n", + "\n", + "for i, assets in enumerate(client.data_modeling.instances(\n", + " chunk_size=500,\n", + " instance_type=\"node\",\n", + " sources=asset_vid,\n", + " space=INST_SP,\n", + " limit=20000,\n", + " sort=InstanceSort(property=[\"node\", \"externalId\"], direction=\"descending\"),\n", + " filter=extra_filter,\n", + ")):\n", + " print(f\"Fetching batch {i + 1}\")\n", + " print(len(assets))" + ] + }, + { + "cell_type": "markdown", + "id": "78a65d04", + "metadata": {}, + "source": [ + "### Fetching assets with the query endpoint\n", + "\n", + "Use `/query` when you need only a specific subset of properties of the retrieved instances. This query is equivalent to the `list()` example above." + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "719682c0", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "id": "a7eae73b", - "metadata": {}, - "outputs": [], - "source": [] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "sourceContext distribution (top 5): [('cfihos_test', 198), (None, 2)]\n", + "Querying Tags with sourceContext == 'cfihos_test'\n", + "500\n", + "[\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"name\": \"Seawater Lift Pump A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Lube Oil Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"PA/GA System Process Area\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"df052853-f39c-405b-a275-33768b91c623\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"name\": \"Gas Turbine Generator A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"name\": \"Chemical Injection Pump\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Scaffolding Kit A\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"2nd Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"name\": \"UPS System Process Hall\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"PH 2nd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"2nd Stage Suction Line 12in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"c39906ea-0a81-4cb0-a002-9658b8846a38\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Subsea Control Module A\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Scrubber Level Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Platform Main Deck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"1st Stage Performance Control Valve\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Gas Turbine Generator B\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Top Drive System\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Safety Relief Valve\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-48\",\n", + " \"version\": 34,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Area 48 Subsea Systems\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-WT\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"name\": \"Water Treatment System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-UT\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"name\": \"Utilities System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-GC\",\n", + " \"version\": 34,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Gas Compression System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-EL\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"name\": \"Electrical Distribution\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23\",\n", + " \"version\": 34,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Area 23 Gas Compression\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH\",\n", + " \"version\": 33,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Valhall Process Hall\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"PH-S-2308\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"PH-S-2308\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TX-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"PH-S-2301\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"PH-S-2301\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"PH-S-2217\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"PH-S-2217\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"PH-S-1400\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"PH-S-1400\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TX-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"PH-S-1305\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"PH-S-1305\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Drilling Derrick Assembly\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Network Switch Cabinet A\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"90-MX-9245\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"90-MX-9245\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XX-9105\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"VFD 1st Stage Compressor\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Process Hall Overhead Crane 10T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"1st Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"PH 3rd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Helideck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"Instrument Equipment Room\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"2nd Stage Suction Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"6767827c-f362-4b04-b303-fb5669ecab2b\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " },\n", + " \"name\": \"Subsea Manifold\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Module Support Structure\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9011A+82B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"60-EN-9011A+82B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9011A+80E2\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"60-EN-9011A+80E2\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9010B+29A1\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-GK-9107B-M01\"\n", + " },\n", + " \"name\": \"60-EN-9010B+29A1\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9010B+27G2\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VA-9110-M01\"\n", + " },\n", + " \"name\": \"60-EN-9010B+27G2\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9010B+27G1\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"60-EN-9010B+27G1\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PC-9109-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9010A+28A2\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"60-EN-9010A+28A2\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-GK-9107A-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EN-9010A+24B1\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"60-EN-9010A+24B1\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9106\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"60-EH-9000A+H00\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"60-EH-9000A+H00\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Lifting Sling Assembly\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"1st Stage Discharge Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Portable Gas Detector\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-ZSL-96966B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XY-96966B\"\n", + " },\n", + " \"name\": \"48-ZSL-96966B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-ZSL-96966A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XY-96966A\"\n", + " },\n", + " \"name\": \"48-ZSL-96966A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-ZSH-96966B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-ZSH-96966B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XY-96966B\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-ZSH-96966A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-ZSH-96966A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XY-96966A\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XY-96966B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XY-96966B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XY-96966A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XY-96966A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XY-96961\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96961\"\n", + " },\n", + " \"name\": \"48-XY-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XY-96960\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96960\"\n", + " },\n", + " \"name\": \"48-XY-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XV-96962\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XV-96962\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9106\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XV-96961\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XV-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9105\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XV-96960-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XV-96960-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96960\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XV-96960-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XV-96960-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96960\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XV-96960\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XV-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-TB-9159\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XI-96964B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-XI-96964B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-XI-96964A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " },\n", + " \"name\": \"48-XI-96964A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-TSL-96960\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " },\n", + " \"name\": \"48-TSL-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-TB-9159\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-TB-9159\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-9113\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " },\n", + " \"name\": \"48-SU-9113\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-9106\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " },\n", + " \"name\": \"48-SU-9106\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-9105\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-SU-9105\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-8503\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:30.893+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Subsea Manifold\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-8502\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:30.893+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " },\n", + " \"name\": \"Subsea Christmas Tree Well-1\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-SU-8501\",\n", + " \"version\": 45,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Subsea Control Module A\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PT-96962\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96962\"\n", + " },\n", + " \"name\": \"48-PT-96962\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PT-96961\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96961\"\n", + " },\n", + " \"name\": \"48-PT-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PT-96960\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-PT-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96960\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PSV-96963\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-PSV-96963\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-TB-9159\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PSE-96962\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9106\"\n", + " },\n", + " \"name\": \"48-PSE-96962\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PSE-96961\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9105\"\n", + " },\n", + " \"name\": \"48-PSE-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PI-96962A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-PI-96962A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96962\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PI-96962\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-PI-96962\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96962\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PI-96961A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-XV-96961\"\n", + " },\n", + " \"name\": \"48-PI-96961A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PI-96961\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-PI-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96961\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PI-96960\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96960\"\n", + " },\n", + " \"name\": \"48-PI-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PCV-96964\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-TB-9159\"\n", + " },\n", + " \"name\": \"48-PCV-96964\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PAL-96962\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96962\"\n", + " },\n", + " \"name\": \"48-PAL-96962\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PAL-96961\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96961\"\n", + " },\n", + " \"name\": \"48-PAL-96961\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-PAHH-96960\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-PT-96960\"\n", + " },\n", + " \"name\": \"48-PAHH-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-LG-96960\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-LG-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-TB-9159\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-FXY-96960\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"48-FXY-96960\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"48-FE-9189\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"48-SU-9113\"\n", + " },\n", + " \"name\": \"48-FE-9189\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"1st Stage Gear Thrust Bearing Temp\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-V-90353\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-V-90353\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PDT-92506\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-V-90352\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92508\"\n", + " },\n", + " \"name\": \"45-V-90352\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92607B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-TT-92607B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92607A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-TT-92607A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-TT-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-TT-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92506\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-TT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-96196\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107B\"\n", + " },\n", + " \"name\": \"45-TI-96196\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-96195\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107A\"\n", + " },\n", + " \"name\": \"45-TI-96195\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92607B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-TT-92607B\"\n", + " },\n", + " \"name\": \"45-TI-92607B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92607A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-TI-92607A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-TT-92607A\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-TI-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-TT-92606\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92508\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-TI-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-TT-92508\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92506\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-TI-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-TT-92506\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92139B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"45-TI-92139B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TI-92139A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"45-TI-92139A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92609\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-PT-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92608\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PT-92608\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PT-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-96196\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PSV-96196\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107B\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-96195\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107A\"\n", + " },\n", + " \"name\": \"45-PSV-96195\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92613\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PSV-92613\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92612\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PSV-92612\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92515\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PSV-92515\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92514\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PSV-92514\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92510S\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PSV-92510S\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PI-92609\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92609\"\n", + " },\n", + " \"name\": \"45-PI-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PI-92608\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PI-92608\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92608\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PI-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PI-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92508\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDT-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PDT-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDT-92506\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PDT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDI-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PDT-92606\"\n", + " },\n", + " \"name\": \"45-PDI-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDI-92506\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PDI-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PDT-92506\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDAH-92606\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-PDAH-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PDT-92606\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDAH-92506\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PDT-92506\"\n", + " },\n", + " \"name\": \"45-PDAH-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PAHH-92609\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92609\"\n", + " },\n", + " \"name\": \"45-PAHH-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PAH-92608\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92608\"\n", + " },\n", + " \"name\": \"45-PAH-92608\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PAH-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PT-92508\"\n", + " },\n", + " \"name\": \"45-PAH-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92613-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92613\"\n", + " },\n", + " \"name\": \"45-HV-92613-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92613-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92613-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92613\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92613-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92613-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92613\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92612-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92612-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92612\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92612-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92612\"\n", + " },\n", + " \"name\": \"45-HV-92612-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92612-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92612\"\n", + " },\n", + " \"name\": \"45-HV-92612-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92609\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-HV-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92515-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92515\"\n", + " },\n", + " \"name\": \"45-HV-92515-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92515-01\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92515-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92515\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92514-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92514\"\n", + " },\n", + " \"name\": \"45-HV-92514-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92514-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-PSV-92514\"\n", + " },\n", + " \"name\": \"45-HV-92514-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92510-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92510-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92510-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92510-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92509\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-HV-92509\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FT-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FE-92606\"\n", + " },\n", + " \"name\": \"45-FT-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FT-92506\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-FT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FT-92139B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"45-FT-92139B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FT-92139A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"45-FT-92139A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FO-96130\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-FO-96130\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FO-92138\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"45-FO-92138\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FI-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92606\"\n", + " },\n", + " \"name\": \"45-FI-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FI-92506\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92506\"\n", + " },\n", + " \"name\": \"45-FI-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FI-92139B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92139B\"\n", + " },\n", + " \"name\": \"45-FI-92139B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FI-92139A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-FI-92139A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92139A\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FE-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-FE-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FE-92506\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-FE-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92506\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FAL-92139B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-FAL-92139B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92139B\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FAL-92139A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92139A\"\n", + " },\n", + " \"name\": \"45-FAL-92139A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FAH-92606\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"45-FAH-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92606\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FAH-92506\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"45-FT-92506\"\n", + " },\n", + " \"name\": \"45-FAH-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"423da2b8-3e47-4e1b-8139-c773f19508b2\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-48\"\n", + " },\n", + " \"name\": \"Subsea Christmas Tree Well-1\",\n", + " \"tags\": [\n", + " \"subsea-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"name\": \"PH 1st Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"name\": \"Electrical Equipment Room\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Deluge Fire Protection Station A\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"Emergency Shower Station\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"230900\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"name\": \"230900\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96121-03\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-96121-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96121-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96121-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-96121-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96121-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96121-01\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-96121-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96121-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96107-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96107-03\"\n", + " },\n", + " \"name\": \"23-ZT-96107-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96107-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96107-02\"\n", + " },\n", + " \"name\": \"23-ZT-96107-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-96107-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZE-96107-01\"\n", + " },\n", + " \"name\": \"23-ZT-96107-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-92543-MB\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-92543\"\n", + " },\n", + " \"name\": \"23-ZT-92543-MB\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-92543\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-92543\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FV-92543\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-92538-MB\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-92538-MB\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-92538\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZT-92538\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZT-92538\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PV-92538\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZS-96142C\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZS-96142C\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZS-96142B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZS-96142B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZS-96142A\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " },\n", + " \"name\": \"23-ZS-96142A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZI-96142B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZS-96142B\"\n", + " },\n", + " \"name\": \"23-ZI-96142B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZI-96142A\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZI-96142A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZS-96142A\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZI-92543\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-92543\"\n", + " },\n", + " \"name\": \"23-ZI-92543\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZI-92538\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZI-92538\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-92538\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96121-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZE-96121-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96121-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZE-96121-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96121-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZE-96121-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96107-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-ZE-96107-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96107-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-ZE-96107-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZE-96107-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-ZE-96107-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAL-92538\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-92538\"\n", + " },\n", + " \"name\": \"23-ZAL-92538\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96121-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-03\"\n", + " },\n", + " \"name\": \"23-ZAHH-96121-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96121-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-02\"\n", + " },\n", + " \"name\": \"23-ZAHH-96121-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96121-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-01\"\n", + " },\n", + " \"name\": \"23-ZAHH-96121-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96107-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZAHH-96107-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96107-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-02\"\n", + " },\n", + " \"name\": \"23-ZAHH-96107-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAHH-96107-01\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZAHH-96107-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96121-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-ZAH-96121-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96121-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-02\"\n", + " },\n", + " \"name\": \"23-ZAH-96121-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96121-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96121-01\"\n", + " },\n", + " \"name\": \"23-ZAH-96121-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96107-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-03\"\n", + " },\n", + " \"name\": \"23-ZAH-96107-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96107-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-02\"\n", + " },\n", + " \"name\": \"23-ZAH-96107-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ZAH-96107-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ZT-96107-01\"\n", + " },\n", + " \"name\": \"23-ZAH-96107-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSL-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " },\n", + " \"name\": \"23-YZSL-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSL-92526\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YZSL-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSL-92445\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YZSL-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSH-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YZSH-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSH-92526\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YZSH-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YZSH-92445\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " },\n", + " \"name\": \"23-YZSH-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YXY-92545-05\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " },\n", + " \"name\": \"23-YXY-92545-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YXY-92545-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " },\n", + " \"name\": \"23-YXY-92545-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YXY-92526-05\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YXY-92526-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YXY-92526-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YXY-92526-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YXY-92445-05\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YXY-92445-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YVX-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " },\n", + " \"name\": \"23-YVX-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YVX-92526\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YVX-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YVX-92445\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " },\n", + " \"name\": \"23-YVX-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96134-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96134-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96134-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96134-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96134-01\"\n", + " },\n", + " \"name\": \"23-YT-96134-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96133-02\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96133-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96133-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96133-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96133-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96133-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96123\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96123\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96122\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96122\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96120-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96120-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96120-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96120-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96120-01\"\n", + " },\n", + " \"name\": \"23-YT-96120-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96119-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96119-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96119-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96119-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96119-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96119-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96118-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96118-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96118-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96118-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96118-01\"\n", + " },\n", + " \"name\": \"23-YT-96118-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96117-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96117-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96117-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96117-01\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96117-01\"\n", + " },\n", + " \"name\": \"23-YT-96117-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96106-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96106-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96106-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96106-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96106-01\"\n", + " },\n", + " \"name\": \"23-YT-96106-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96105-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96105-02\"\n", + " },\n", + " \"name\": \"23-YT-96105-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YT-96105-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YT-96105-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96105-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSV-92545\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-YSV-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSV-92526\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YSV-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VG-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSV-92445\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-YSV-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSDP-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YSDP-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSDP-92526\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YSDP-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSDP-92445\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YSDP-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPV-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " },\n", + " \"name\": \"23-YPV-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPV-92526\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YPV-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPV-92445\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " },\n", + " \"name\": \"23-YPV-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPSV-92545\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YPSV-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92545\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPSV-92526\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92526\"\n", + " },\n", + " \"name\": \"23-YPSV-92526\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YPSV-92445\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YSV-92445\"\n", + " },\n", + " \"name\": \"23-YPSV-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96134-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96134-02\"\n", + " },\n", + " \"name\": \"23-YI-96134-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96134-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YI-96134-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96134-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96133-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96133-02\"\n", + " },\n", + " \"name\": \"23-YI-96133-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96133-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YI-96133-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96133-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96123\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96123\"\n", + " },\n", + " \"name\": \"23-YI-96123\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96122\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96122\"\n", + " },\n", + " \"name\": \"23-YI-96122\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96120-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YI-96120-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96120-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96120-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96120-01\"\n", + " },\n", + " \"name\": \"23-YI-96120-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96119-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96119-02\"\n", + " },\n", + " \"name\": \"23-YI-96119-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96119-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YI-96119-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96119-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96118-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96118-02\"\n", + " },\n", + " \"name\": \"23-YI-96118-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96118-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96118-01\"\n", + " },\n", + " \"name\": \"23-YI-96118-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96117-02\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96117-02\"\n", + " },\n", + " \"name\": \"23-YI-96117-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96117-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96117-01\"\n", + " },\n", + " \"name\": \"23-YI-96117-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96106-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96106-02\"\n", + " },\n", + " \"name\": \"23-YI-96106-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96106-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96106-01\"\n", + " },\n", + " \"name\": \"23-YI-96106-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96105-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96105-02\"\n", + " },\n", + " \"name\": \"23-YI-96105-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YI-96105-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YE-96105-01\"\n", + " },\n", + " \"name\": \"23-YI-96105-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96134-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-YE-96134-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96134-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-YE-96134-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96133-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YE-96133-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96133-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-YE-96133-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96120-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96120-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96120-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96120-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96119-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YE-96119-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96119-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96119-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96118-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96118-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96118-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96118-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96117-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-YE-96117-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96117-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YE-96117-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96106-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YE-96106-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96106-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-YE-96106-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96105-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YE-96105-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YE-96105-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-YE-96105-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96134-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96134-02\"\n", + " },\n", + " \"name\": \"23-YAHH-96134-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96134-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96134-01\"\n", + " },\n", + " \"name\": \"23-YAHH-96134-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96133-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96133-02\"\n", + " },\n", + " \"name\": \"23-YAHH-96133-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96133-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96133-01\"\n", + " },\n", + " \"name\": \"23-YAHH-96133-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96120-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96120-02\"\n", + " },\n", + " \"name\": \"23-YAHH-96120-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96120-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96120-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96120-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96119-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96119-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96119-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96119-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96119-01\"\n", + " },\n", + " \"name\": \"23-YAHH-96119-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96118-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96118-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96118-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96118-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96118-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96118-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96117-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96117-02\"\n", + " },\n", + " \"name\": \"23-YAHH-96117-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96117-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96117-01\"\n", + " },\n", + " \"name\": \"23-YAHH-96117-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96106-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96106-02\"\n", + " },\n", + " \"name\": \"23-YAHH-96106-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96106-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96106-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96106-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96105-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAHH-96105-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96105-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96105-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96105-01\"\n", + " },\n", + " \"name\": \"23-YAHH-96105-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAHH-96105\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FO-96105\"\n", + " },\n", + " \"name\": \"23-YAHH-96105\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96134-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96134-02\"\n", + " },\n", + " \"name\": \"23-YAH-96134-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96134-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96134-01\"\n", + " },\n", + " \"name\": \"23-YAH-96134-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96133-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96133-02\"\n", + " },\n", + " \"name\": \"23-YAH-96133-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96133-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96133-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96133-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96123\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96123\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96123\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96122\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96122\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96122\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96120-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96120-02\"\n", + " },\n", + " \"name\": \"23-YAH-96120-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96120-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96120-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96120-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96119-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96119-02\"\n", + " },\n", + " \"name\": \"23-YAH-96119-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96119-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96119-01\"\n", + " },\n", + " \"name\": \"23-YAH-96119-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96118-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96118-02\"\n", + " },\n", + " \"name\": \"23-YAH-96118-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96118-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96118-01\"\n", + " },\n", + " \"name\": \"23-YAH-96118-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96117-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96117-02\"\n", + " },\n", + " \"name\": \"23-YAH-96117-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96117-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96117-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96117-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96106-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-YAH-96106-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96106-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96106-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96106-01\"\n", + " },\n", + " \"name\": \"23-YAH-96106-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96105-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96105-02\"\n", + " },\n", + " \"name\": \"23-YAH-96105-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YAH-96105-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-YT-96105-01\"\n", + " },\n", + " \"name\": \"23-YAH-96105-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XZSL-92748\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XZSL-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XZSH-92748\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XZSH-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96164-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-96164-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KB-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96164-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KB-9103\"\n", + " },\n", + " \"name\": \"23-XY-96164-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96135\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XT-96135\"\n", + " },\n", + " \"name\": \"23-XY-96135\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96125\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-96125\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XT-96125\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96124\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XT-96124\"\n", + " },\n", + " \"name\": \"23-XY-96124\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-96108\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XT-96108\"\n", + " },\n", + " \"name\": \"23-XY-96108\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92748-04\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-92748-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92543-05\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-92543-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-05\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92543-04\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-92543-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-04\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92543-03\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-92543-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FY-92543-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92538-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XY-92538-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PV-92538\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XY-92538-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PV-92538\"\n", + " },\n", + " \"name\": \"23-XY-92538-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XX-9114\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-2ND STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-XX-9114\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XX-9106\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-XX-9106\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XX-9105\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XX-9105\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XVP-92748\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " },\n", + " \"name\": \"23-XVP-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92748-J01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " },\n", + " \"name\": \"23-XV-92748-J01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92748\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-XV-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92601\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"2nd Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92501\",\n", + " \"version\": 42,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"1st Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XT-96135\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XE-96135\"\n", + " },\n", + " \"name\": \"23-XT-96135\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XT-96125\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XT-96125\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XE-96125\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XT-96124\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XE-96124\"\n", + " },\n", + " \"name\": \"23-XT-96124\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XT-96108\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XT-96108\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XE-96108\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XS-96139\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-XS-96139\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XS-92529\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-LTX-92529\"\n", + " },\n", + " \"name\": \"23-XS-92529\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XPV-92748\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XPV-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92748\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XE-96135\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-XE-96135\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XE-96125\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-XE-96125\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XE-96124\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-XE-96124\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XE-96108\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XE-96108\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-96139\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XA-96139\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XS-96139\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-92543-09\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XA-92543-09\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-09\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-92543-08\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-08\"\n", + " },\n", + " \"name\": \"23-XA-92543-08\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-92543-07\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-07\"\n", + " },\n", + " \"name\": \"23-XA-92543-07\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-92543-06\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-XA-92543-06\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FS-92543-06\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XA-92529\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-LTX-92529\"\n", + " },\n", + " \"name\": \"23-XA-92529\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VG-9101\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 08:55:02.631+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", + " },\n", + " \"name\": \"23-VG-9101\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9114\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", + " },\n", + " \"name\": \"23-VA-9114\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110-M01-39\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " },\n", + " \"name\": \"23-VA-9110-M01-39\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110-M01-24\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-VA-9110-M01-24\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110-M01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VA-9110\"\n", + " },\n", + " \"name\": \"23-VA-9110-M01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110-H01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-VA-9110-H01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VA-9110\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110-A01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-VA-9110-A01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VA-9110\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-VA-9110\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-VA-9110\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TX-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TY-92604B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92604B\"\n", + " },\n", + " \"name\": \"23-TY-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TY-92504\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TY-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92504\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TX-96167\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PDT-96167\"\n", + " },\n", + " \"name\": \"23-TX-96167\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TX-9103\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TX-9103\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96196\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107B\"\n", + " },\n", + " \"name\": \"23-TW-96196\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96195\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9107A\"\n", + " },\n", + " \"name\": \"23-TW-96195\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96183\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96183\"\n", + " },\n", + " \"name\": \"23-TW-96183\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96181-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-03\"\n", + " },\n", + " \"name\": \"23-TW-96181-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96181-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-02\"\n", + " },\n", + " \"name\": \"23-TW-96181-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96181-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TW-96181-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-96148\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TW-96148\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96148\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TW-92524\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TI-92524\"\n", + " },\n", + " \"name\": \"23-TW-92524\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TV-92604B\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-TV-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TV-92504\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TV-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96183\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9106\"\n", + " },\n", + " \"name\": \"23-TT-96183\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96181-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-96181-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96181-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-96181-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96181-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-01\"\n", + " },\n", + " \"name\": \"23-TT-96181-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96168\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP DRY GAS SEAL SYS-PH\"\n", + " },\n", + " \"name\": \"23-TT-96168\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96148\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-96148\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96147-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"23-TT-96147-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96115-01\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"1st Stage Gear Thrust Bearing Temperature\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92604B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"230900\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92604A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92604A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92604B\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92604\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92604\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92604B\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92603\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92603\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92602\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-TT-92602\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92539 (2)\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-TT-92539 (2)\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92539\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-TT-92539\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92537\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92537\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92536-MB\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92536\"\n", + " },\n", + " \"name\": \"23-TT-92536-MB\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92536\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92536\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92533\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " },\n", + " \"name\": \"23-TT-92533\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92532-MB\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92532\"\n", + " },\n", + " \"name\": \"23-TT-92532-MB\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92532\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92532\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92512\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92512\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92504\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92504\"\n", + " },\n", + " \"name\": \"23-TT-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92502\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TT-92502\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TSHH-96197\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9106\"\n", + " },\n", + " \"name\": \"23-TSHH-96197\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TSHH-96147-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"23-TSHH-96147-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TSHH-96147\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"23-TSHH-96147\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TL-8602\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Portable Gas Detector\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TL-8601\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TIC-96148\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96148\"\n", + " },\n", + " \"name\": \"23-TIC-96148\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TIC-96147\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96147-02\"\n", + " },\n", + " \"name\": \"23-TIC-96147\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TIC-92604B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92604B\"\n", + " },\n", + " \"name\": \"23-TIC-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TIC-92604\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92604B\"\n", + " },\n", + " \"name\": \"23-TIC-92604\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TIC-92504\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TV-92504\"\n", + " },\n", + " \"name\": \"23-TIC-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96183\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96183\"\n", + " },\n", + " \"name\": \"23-TI-96183\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96181-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96181-03\"\n", + " },\n", + " \"name\": \"23-TI-96181-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96168\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96168\"\n", + " },\n", + " \"name\": \"23-TI-96168\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96148\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96148\"\n", + " },\n", + " \"name\": \"23-TI-96148\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96147-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96147-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96147-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96137-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96137-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96137-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96137-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96137-02\"\n", + " },\n", + " \"name\": \"23-TI-96137-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96137-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96137-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96137-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-08\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-08\"\n", + " },\n", + " \"name\": \"23-TI-96136-08\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-07\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-07\"\n", + " },\n", + " \"name\": \"23-TI-96136-07\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-05\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-05\"\n", + " },\n", + " \"name\": \"23-TI-96136-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-04\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-04\"\n", + " },\n", + " \"name\": \"23-TI-96136-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-02\"\n", + " },\n", + " \"name\": \"23-TI-96136-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96136-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96136-01\"\n", + " },\n", + " \"name\": \"23-TI-96136-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96132-02\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96132-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96132-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96132-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96132-01\"\n", + " },\n", + " \"name\": \"23-TI-96132-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96131-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96131-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96131-02\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96131-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96131-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96131-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96114-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96114-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96114-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96114-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96114-01\"\n", + " },\n", + " \"name\": \"23-TI-96114-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96113-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96113-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96113-03\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96113-01\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96113-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96113-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96112-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96112-03\"\n", + " },\n", + " \"name\": \"23-TI-96112-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96112-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96112-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96112-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96111-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96111-03\"\n", + " },\n", + " \"name\": \"23-TI-96111-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96111-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96111-01\"\n", + " },\n", + " \"name\": \"23-TI-96111-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96104\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FG-96104\"\n", + " },\n", + " \"name\": \"23-TI-96104\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96103\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FG-96103\"\n", + " },\n", + " \"name\": \"23-TI-96103\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96102-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96102-03\"\n", + " },\n", + " \"name\": \"23-TI-96102-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96102-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-96102-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96102-01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96101-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96101-03\"\n", + " },\n", + " \"name\": \"23-TI-96101-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-96101-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TE-96101-01\"\n", + " },\n", + " \"name\": \"23-TI-96101-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92604A\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92604A\"\n", + " },\n", + " \"name\": \"23-TI-92604A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92603\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-92603\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92603\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92602\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-92602\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92602\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92539\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92539\"\n", + " },\n", + " \"name\": \"23-TI-92539\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92537\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92537\"\n", + " },\n", + " \"name\": \"23-TI-92537\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92536\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92536\"\n", + " },\n", + " \"name\": \"23-TI-92536\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92533 (2)\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-92533 (2)\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92533\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92533\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-92533\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92533\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92532\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92532\"\n", + " },\n", + " \"name\": \"23-TI-92532\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92524\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-VG-9101\"\n", + " },\n", + " \"name\": \"23-TI-92524\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92512\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92512\"\n", + " },\n", + " \"name\": \"23-TI-92512\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TI-92502\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TI-92502\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-92502\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96183\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96183\"\n", + " },\n", + " \"name\": \"23-TE-96183\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96181-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"23-TE-96181-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96181-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"23-TE-96181-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96181-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", + " },\n", + " \"name\": \"23-TE-96181-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96168\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96168\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96168\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96148\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96148\"\n", + " },\n", + " \"name\": \"23-TE-96148\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96147-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96147-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96147\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FE-9122\"\n", + " },\n", + " \"name\": \"23-TE-96147\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96137-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96137-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96137-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96137-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96137-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96137-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-09\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96136-09\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-08\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96136-08\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-07\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96136-07\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-06\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96136-06\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-05\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96136-05\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-04\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96136-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96136-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96136-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96136-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96136-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96132-02\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96132-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96132-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96132-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96131-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96131-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96131-01\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9101-M01\"\n", + " },\n", + " \"name\": \"23-TE-96131-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96116-04\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96116-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96116-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96116-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96116-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96116-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96116-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96116-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96115-04\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96115-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96115-03\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96115-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96115-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96115-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96115-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96115-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96114-04\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96114-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96114-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96114-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96114-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96114-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96114-01\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96114-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96113-04\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " },\n", + " \"name\": \"23-TE-96113-04\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ]\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96113-03\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96113-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-96113-02\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"name\": \"23-TE-96113-02\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DB-9101\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " }\n", + "]\n" + ] + } + ], + "source": [ + "# Discover a real sourceContext value in INST_SP so the query actually returns something.\n", + "from collections import Counter\n", + "\n", + "probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", + "source_contexts = Counter(\n", + " (node.properties.get(asset_vid, {}) or {}).get(\"sourceContext\")\n", + " for node in probe\n", + ")\n", + "print(\"sourceContext distribution (top 5):\", source_contexts.most_common(5))\n", + "\n", + "sourceContext = next((val for val, _ in source_contexts.most_common() if val), None)\n", + "if sourceContext is None:\n", + " raise RuntimeError(\n", + " \"No Tag in INST_SP has a populated sourceContext - pick another filter property.\"\n", + " )\n", + "print(f\"Querying Tags with sourceContext == {sourceContext!r}\")\n", + "\n", + "query = Query(\n", + " with_={ # FROM all Nodes WHERE space = INST_SP AND has data in asset view AND sourceContext = \n", + " \"assets\": NodeResultSetExpression(\n", + " filter=And(\n", + " Equals([\"node\", \"space\"], value={\"parameter\": \"space\"}),\n", + " HasData(views=[asset_vid]),\n", + " Equals(property=asset_vid.as_property_ref(\"sourceContext\"), value={\"parameter\": \"sourceContext\"}),\n", + " ),\n", + " limit=500,\n", + " sort=[InstanceSort(property=(\"node\", \"externalId\"), direction=\"descending\")],\n", + " ),\n", + " },\n", + " select={ # SELECT name, parent, tags FROM assets\n", + " \"assets\": Select(\n", + " [SourceSelector(asset_vid, [\"name\", \"parent\", \"tags\"])],\n", + " ),\n", + " },\n", + " parameters={\"space\": INST_SP, \"sourceContext\": sourceContext},\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " assets = res[\"assets\"]\n", + " print(len(assets))\n", + " print(assets)\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "markdown", + "id": "2d1b93a4", + "metadata": {}, + "source": [ + "# Get subtree of an asset\n", + "\n", + "Getting a subset of assets based on a root is a common use case. Use the 'path' property to extract all assets with a given node in their paths." + ] + }, + { + "cell_type": "markdown", + "id": "14026805", + "metadata": {}, + "source": [ + "### With ContainsAll" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ddf4035e", + "metadata": {}, + "outputs": [], + "source": [ + "# Pick a real subtree root: any Tag that is referenced as another Tag's parent\n", + "# is guaranteed to have at least one child, so ContainsAll/Prefix on path will\n", + "# return something. Cached as `sub_tree_root` for the Prefix cell below too.\n", + "try:\n", + " sub_tree_root\n", + "except NameError:\n", + " probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", + " sub_tree_root = None\n", + " for node in probe:\n", + " parent = (node.properties.get(asset_vid, {}) or {}).get(\"parent\")\n", + " if parent and parent.get(\"space\") and parent.get(\"externalId\"):\n", + " sub_tree_root = NodeId(parent[\"space\"], parent[\"externalId\"])\n", + " break\n", + " if sub_tree_root is None:\n", + " raise RuntimeError(\n", + " \"No Tag in INST_SP has a populated `parent` - cannot derive a subtree root.\"\n", + " )\n", + " print(f\"Using subtree root: {sub_tree_root}\")\n", + "\n", + "start_time = time.time()\n", + "sub_tree_nodes = client.data_modeling.instances.list(\n", + " sources=asset_vid,\n", + " filter=ContainsAll(property=asset_vid.as_property_ref(\"path\"), values=[sub_tree_root]),\n", + " limit=500,\n", + ")\n", + "contains_time = time.time() - start_time\n", + "print(f\"ContainsAll filter call took: {contains_time:.3f} seconds\")\n", + "print(len(sub_tree_nodes))\n", + "print(sub_tree_nodes)" + ] + }, + { + "cell_type": "markdown", + "id": "8282cf56", + "metadata": {}, + "source": [ + "### With Prefix (recommended)\n", + "\n", + "`Prefix` on `path` uses the prefix index and is typically much faster than `ContainsAll` for subtree extraction. Prefer `Prefix` whenever you have the root's full `path`. Use `ContainsAll` only when you need to match a node at an arbitrary position in the path." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "2e7854ab", + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "id": "0c3b5293", - "metadata": {}, - "source": [ - "## The same query as a json object\n", - "\n", - "In some cases you may need to use a json object instead of SDK for querying" - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "Using subtree root: NodeId(space='inst_location', external_id='VAL-PH-23')\n", + "Prefix filter call took: 0.184 seconds\n", + "90\n", + "[\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-EL\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Electrical Distribution\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"Power generation and distribution\",\n", + " \"sourceId\": \"VAL-PH-23-EL\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-GC\",\n", + " \"version\": 34,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Gas Compression System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"1st 2nd 3rd stage gas compression\",\n", + " \"sourceId\": \"VAL-PH-23-GC\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-UT\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Utilities System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"General utilities and support\",\n", + " \"sourceId\": \"VAL-PH-23-UT\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-WT\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Water Treatment System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"Seawater and chemical injection\",\n", + " \"sourceId\": \"VAL-PH-23-WT\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"626221d1-e8f3-4761-97bd-239e013c7f75\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Module Support Structure\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Compressor module support steel\",\n", + " \"sourceId\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Instrument Equipment Room\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Instrument equipment room enclosure\",\n", + " \"sourceId\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Safety Relief Valve\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Pressure safety valve 1st stage discharge\",\n", + " \"sourceId\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"2nd Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Emergency shutdown valve 2nd stage suction\",\n", + " \"sourceId\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Suction Line 16in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"16 inch suction line from scrubber to 1st stage compressor\",\n", + " \"sourceId\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Seawater Lift Pump B\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Centrifugal seawater lift pump train B\",\n", + " \"sourceId\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Portable Gas Detector\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Portable multi-gas detector for confined space\",\n", + " \"sourceId\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"a86482db-1947-43e7-9781-67c6bc38ad09\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Medium voltage motor for 1st stage compressor\",\n", + " \"sourceId\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"PA/GA System Process Area\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"description\": \"Public address and general alarm system\",\n", + " \"sourceId\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"056df394-acc1-4b71-9897-0053e2aec3b0\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"056df394-acc1-4b71-9897-0053e2aec3b0\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Hydraulic torque wrench for flange bolting\",\n", + " \"sourceId\": \"056df394-acc1-4b71-9897-0053e2aec3b0\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"2a804545-b201-4985-822f-45c14ac0d1a5\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Electrical Equipment Room\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Main electrical equipment room enclosure\",\n", + " \"sourceId\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Discharge Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Shell and tube gas cooler after 1st stage\",\n", + " \"sourceId\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"8e337b6f-be72-416e-bef0-3308975ae627\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"VFD 1st Stage Compressor\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Variable frequency drive for 1st stage compressor\",\n", + " \"sourceId\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"af455e61-124c-46e9-9c9d-e962555a917c\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Performance Control Valve\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Anti-surge control valve 1st stage\",\n", + " \"sourceId\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Lube Oil Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Plate heat exchanger for compressor lube oil\",\n", + " \"sourceId\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"PH 1st Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"1st stage centrifugal gas compressor\",\n", + " \"sourceId\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Platform Main Deck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Main deck structural module\",\n", + " \"sourceId\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"2nd Stage Suction Line 12in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"12 inch suction line to 2nd stage compressor\",\n", + " \"sourceId\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Emergency Shower Station\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Emergency shower and eye wash station\",\n", + " \"sourceId\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Top Drive System\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"description\": \"Main top drive system\",\n", + " \"sourceId\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Scrubber Level Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Level transmitter 1st stage suction scrubber\",\n", + " \"sourceId\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"d271d97b-d105-49c2-977d-ec812b290554\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Scaffolding Kit A\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Standard scaffolding kit for maintenance\",\n", + " \"sourceId\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"dda44393-0a89-4654-a84f-af33ba19b93a\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Chemical Injection Pump\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Positive displacement chemical injection pump\",\n", + " \"sourceId\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Process Hall Overhead Crane 10T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"10 tonne overhead crane process hall\",\n", + " \"sourceId\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"a98260bd-c718-446c-901a-913809d4f095\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Gas Turbine Generator B\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"GE LM2500 gas turbine generator set B\",\n", + " \"sourceId\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"df052853-f39c-405b-a275-33768b91c623\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"df052853-f39c-405b-a275-33768b91c623\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Gas Turbine Generator A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"GE LM2500 gas turbine generator set A\",\n", + " \"sourceId\": \"df052853-f39c-405b-a275-33768b91c623\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Lifting Sling Assembly\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Certified lifting sling assembly 5T\",\n", + " \"sourceId\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"9266fab7-6edf-4411-a0a2-3074e322853f\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Differential pressure transmitter suction cooler\",\n", + " \"sourceId\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Pressure transmitter suction 1st stage compressor\",\n", + " \"sourceId\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Gas Detection System\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Combustible gas detection system area 23\",\n", + " \"sourceId\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Gas Export Line 24in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"24 inch gas export pipeline\",\n", + " \"sourceId\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"PH 3rd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"3rd stage centrifugal gas compressor\",\n", + " \"sourceId\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"PH 2nd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"2nd stage centrifugal gas compressor\",\n", + " \"sourceId\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Deluge Fire Protection Station A\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Deluge system fire protection station A\",\n", + " \"sourceId\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"6ead339e-d534-4778-a891-9312b2f6108e\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Helideck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Helideck platform structure\",\n", + " \"sourceId\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"ad443509-4fdb-4114-82a5-aa79bda20271\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"5 tonne overhead crane turbine hall\",\n", + " \"sourceId\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"UPS System Process Hall\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Uninterruptible power supply process hall\",\n", + " \"sourceId\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Gear Thrust Bearing Temp\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Temperature transmitter gear thrust bearing\",\n", + " \"sourceId\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"2nd Stage Suction Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Shell and tube gas cooler before 2nd stage\",\n", + " \"sourceId\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"8819a855-4229-4cb0-a975-967c6c3d935b\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Emergency shutdown valve 1st stage suction\",\n", + " \"sourceId\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"933aa789-5571-48bf-91a3-234f2a66522e\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Network Switch Cabinet A\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"description\": \"Main network switch cabinet area 23\",\n", + " \"sourceId\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"9e64206b-39d2-442f-bd80-4864ee58104d\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Drilling Derrick Assembly\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"description\": \"Main drilling derrick structure\",\n", + " \"sourceId\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", + " \"version\": 5,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Flow transmitter 1st stage compressor\",\n", + " \"sourceId\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", + " \"version\": 6,\n", + " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Seawater Lift Pump A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Centrifugal seawater lift pump train A\",\n", + " \"sourceId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-KA-9102\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:22.932+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9102\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"PH 2nd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"2nd stage centrifugal gas compressor\",\n", + " \"sourceId\": \"23-KA-9102\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PSV-92550\",\n", + " \"version\": 46,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:22.932+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PSV-92550\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"1st Stage Discharge Safety Relief Valve\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Maintenance record 1st stage PSV\",\n", + " \"sourceId\": \"23-PSV-92550\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EA-9501\",\n", + " \"version\": 45,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EA-9501\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"1st Stage Discharge Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Maintenance record 1st stage discharge cooler\",\n", + " \"sourceId\": \"23-EA-9501\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EL-9701\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EL-9701\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Medium voltage motor for 1st stage compressor\",\n", + " \"sourceId\": \"23-EL-9701\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PT-92501\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PT-92501\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Pressure transmitter suction 1st stage compressor\",\n", + " \"sourceId\": \"23-PT-92501\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92501\",\n", + " \"version\": 42,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92501\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"1st Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Maintenance record for 1st stage ESDV\",\n", + " \"sourceId\": \"23-XV-92501\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-GT-9401\",\n", + " \"version\": 42,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:25.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-GT-9401\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", + " \"name\": \"Gas Turbine Generator A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Maintenance record gas turbine generator A\",\n", + " \"sourceId\": \"23-GT-9401\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PA-9201A\",\n", + " \"version\": 41,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-18 13:15:25.062+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PA-9201A\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Seawater Lift Pump A\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Centrifugal seawater lift pump train A\",\n", + " \"sourceId\": \"23-PA-9201A\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-L-92701\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-18 19:19:32.744+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-L-92701\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"Gas Export Line 24in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"24 inch gas export pipeline\",\n", + " \"sourceId\": \"23-L-92701\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PCV-92538\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PCV-92538\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Anti-Surge Control Valve\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Anti-surge control valve 1st stage\",\n", + " \"sourceId\": \"23-PCV-92538\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92601\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XV-92601\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"2nd Stage Suction ESDV\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"Emergency shutdown valve 2nd stage suction\",\n", + " \"sourceId\": \"23-XV-92601\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EA-9502\",\n", + " \"version\": 36,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EA-9502\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"2nd Stage Discharge Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Shell and tube gas cooler before 2nd stage\",\n", + " \"sourceId\": \"23-EA-9502\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EA-9503\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EA-9503\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"Lube Oil Cooler\",\n", + " \"tags\": [\n", + " \"static-equipment\"\n", + " ],\n", + " \"description\": \"Plate heat exchanger for compressor lube oil\",\n", + " \"sourceId\": \"23-EA-9503\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PA-9201B\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PA-9201B\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Seawater Lift Pump B\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Centrifugal seawater lift pump train B\",\n", + " \"sourceId\": \"23-PA-9201B\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-FT-92537\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-FT-92537\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Flow transmitter 1st stage compressor\",\n", + " \"sourceId\": \"23-FT-92537\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-GT-9402\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-GT-9402\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Gas Turbine Generator B\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"GE LM2500 gas turbine generator set B\",\n", + " \"sourceId\": \"23-GT-9402\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-KA-9103\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-KA-9103\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"PH 3rd Stage Gas Compressor\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"3rd stage centrifugal gas compressor\",\n", + " \"sourceId\": \"23-KA-9103\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-L-92501\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-L-92501\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"1st Stage Suction Line 16in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"16 inch suction line from scrubber to 1st stage compressor\",\n", + " \"sourceId\": \"23-L-92501\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-L-92601\",\n", + " \"version\": 28,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-L-92601\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"2nd Stage Suction Line 12in\",\n", + " \"tags\": [\n", + " \"piping-equipment\"\n", + " ],\n", + " \"description\": \"12 inch suction line to 2nd stage compressor\",\n", + " \"sourceId\": \"23-L-92601\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-96115-01\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TT-96115-01\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"1st Stage Gear Thrust Bearing Temperature\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Temperature transmitter gear thrust bearing\",\n", + " \"sourceId\": \"23-TT-96115-01\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23\",\n", + " \"version\": 34,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Area 23 Gas Compression\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"Gas compression area 23\",\n", + " \"sourceId\": \"VAL-PH-23\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TL-8602\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TL-8602\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Portable Gas Detector\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Portable multi-gas detector for confined space entry\",\n", + " \"sourceId\": \"23-TL-8602\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-DR-9902\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DR-9902\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Top Drive System\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"description\": \"Main top drive system\",\n", + " \"sourceId\": \"23-DR-9902\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EL-9703\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EL-9703\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"VFD 1st Stage Compressor\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Variable frequency drive for 1st stage compressor\",\n", + " \"sourceId\": \"23-EL-9703\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-IT-8302\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-IT-8302\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"PA/GA System Process Area\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"description\": \"Public address and general alarm system\",\n", + " \"sourceId\": \"23-IT-8302\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ME-9802\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ME-9802\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"5 tonne overhead crane turbine hall\",\n", + " \"sourceId\": \"23-ME-9802\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EN-8001\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EN-8001\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Electrical Equipment Room\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Main electrical equipment room enclosure\",\n", + " \"sourceId\": \"23-EN-8001\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EN-8002\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EN-8002\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"Instrument Equipment Room\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Instrument equipment room enclosure\",\n", + " \"sourceId\": \"23-EN-8002\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-IF-8201\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-IF-8201\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Platform Main Deck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Main deck structural module\",\n", + " \"sourceId\": \"23-IF-8201\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-IF-8202\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-IF-8202\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-GC\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", + " \"name\": \"Module Support Structure\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Compressor module support steel\",\n", + " \"sourceId\": \"23-IF-8202\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-MI-8402\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-MI-8402\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", + " \"name\": \"Scaffolding Kit A\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Standard scaffolding kit for maintenance\",\n", + " \"sourceId\": \"23-MI-8402\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-EL-9702\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.984+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-EL-9702\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-EL\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"UPS System Process Hall\",\n", + " \"tags\": [\n", + " \"electrical-equipment\"\n", + " ],\n", + " \"description\": \"Uninterruptible power supply process hall\",\n", + " \"sourceId\": \"23-EL-9702\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-DR-9901\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:52.984+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-DR-9901\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", + " \"name\": \"Drilling Derrick Assembly\",\n", + " \"tags\": [\n", + " \"drilling-equipment\"\n", + " ],\n", + " \"description\": \"Main drilling derrick structure\",\n", + " \"sourceId\": \"23-DR-9901\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HS-8103\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HS-8103\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Gas Detection System\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Combustible gas detection system area 23\",\n", + " \"sourceId\": \"23-HS-8103\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-IT-8301\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-IT-8301\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Network Switch Cabinet A\",\n", + " \"tags\": [\n", + " \"telecom-equipment\"\n", + " ],\n", + " \"description\": \"Main network switch cabinet area 23\",\n", + " \"sourceId\": \"23-IT-8301\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-MI-8401\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-MI-8401\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Lifting Sling Assembly\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Certified lifting sling assembly 5T\",\n", + " \"sourceId\": \"23-MI-8401\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PA-9202\",\n", + " \"version\": 33,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-PA-9202\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-WT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Chemical Injection Pump MEG\",\n", + " \"tags\": [\n", + " \"rotating-equipment\"\n", + " ],\n", + " \"description\": \"Positive displacement diaphragm chemical injection pump\",\n", + " \"sourceId\": \"23-PA-9202\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-IF-8203\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-IF-8203\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Helideck\",\n", + " \"tags\": [\n", + " \"infrastructure\"\n", + " ],\n", + " \"description\": \"Helideck platform structure\",\n", + " \"sourceId\": \"23-IF-8203\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ME-9801\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-ME-9801\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", + " \"name\": \"Process Hall Overhead Crane 10T\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"10 tonne overhead crane process hall\",\n", + " \"sourceId\": \"23-ME-9801\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HS-8101\",\n", + " \"version\": 43,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HS-8101\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", + " \"name\": \"Deluge Fire Protection Station A\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Maintenance record deluge fire protection\",\n", + " \"sourceId\": \"23-HS-8101\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HS-8102\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HS-8102\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", + " \"name\": \"Emergency Shower Station\",\n", + " \"tags\": [\n", + " \"safety-equipment\"\n", + " ],\n", + " \"description\": \"Emergency shower and eye wash station\",\n", + " \"sourceId\": \"23-HS-8102\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TL-8601\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"path\": [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-TL-8601\"\n", + " }\n", + " ],\n", + " \"root\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH\"\n", + " },\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23-UT\"\n", + " },\n", + " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", + " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", + " \"tags\": [\n", + " \"mechanical-equipment\"\n", + " ],\n", + " \"description\": \"Hydraulic torque wrench for flange bolting\",\n", + " \"sourceId\": \"23-TL-8601\",\n", + " \"sourceContext\": \"cfihos_test\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "]\n" + ] + } + ], + "source": [ + "# Reuse sub_tree_root if the ContainsAll cell above has been run; otherwise discover one.\n", + "try:\n", + " sub_tree_root\n", + "except NameError:\n", + " probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", + " sub_tree_root = None\n", + " for node in probe:\n", + " parent = (node.properties.get(asset_vid, {}) or {}).get(\"parent\")\n", + " if parent and parent.get(\"space\") and parent.get(\"externalId\"):\n", + " sub_tree_root = NodeId(parent[\"space\"], parent[\"externalId\"])\n", + " break\n", + " if sub_tree_root is None:\n", + " raise RuntimeError(\n", + " \"No Tag in INST_SP has a populated `parent` - cannot derive a subtree root.\"\n", + " )\n", + " print(f\"Using subtree root: {sub_tree_root}\")\n", + "\n", + "# Retrieve the root asset first to get its path (excluded from the timing below).\n", + "sub_tree_root_retrieved = client.data_modeling.instances.retrieve_nodes(\n", + " sub_tree_root,\n", + " sources=asset_vid,\n", + ")\n", + "\n", + "start_time = time.time()\n", + "sub_tree_nodes_prefix = client.data_modeling.instances.list(\n", + " sources=asset_vid,\n", + " filter=Prefix(\n", + " property=asset_vid.as_property_ref(\"path\"),\n", + " value=sub_tree_root_retrieved.properties.data[asset_vid][\"path\"],\n", + " ),\n", + " limit=500,\n", + ")\n", + "prefix_time = time.time() - start_time\n", + "print(f\"Prefix filter call took: {prefix_time:.3f} seconds\")\n", + "print(len(sub_tree_nodes_prefix))\n", + "print(sub_tree_nodes_prefix)" + ] + }, + { + "cell_type": "markdown", + "id": "62c0010b", + "metadata": {}, + "source": [ + "## Get multiple representations of an asset\n", + "\n", + "As you know, a single instance may have its properties in multiple views. When querying, listing or retrieval, it's possible to get multiple sources (views) along with their properties." + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "9c1a62b6", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 69, - "id": "c75cab47", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "asset (count=0): []\n", - "equipment (count=0): []\n", - "debug: {'notices': []}\n" - ] - } + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
value
spaceinst_location
external_idVAL-PH-23-WT
version35
last_updated_time2026-05-08 12:42:07.619000
created_time2026-03-18 13:14:46.171000
instance_typenode
path[{'space': 'inst_location', 'externalId': 'VAL...
root{'space': 'inst_location', 'externalId': 'VAL-...
parent{'space': 'inst_location', 'externalId': 'VAL-...
pathLastUpdatedTime2026-03-23T08:58:53.319752+00:00
nameWater Treatment System
tags[functional-location]
descriptionSeawater and chemical injection
sourceIdVAL-PH-23-WT
sourceContextcfihos_test
\n", + "
" ], - "source": [ - "# JSON representation of the Nested filter query\n", - "json_query = {\n", - " \"with\": {\n", - " \"asset\": { # identifier of the item to retrieve\n", - " \"limit\": 1000, # default limit is 100\n", - " \"nodes\": { # equivalent to FROM all Nodes in the project WHERE 'parent' of instances with properties\n", - " # in the Asset view has 'tags' property with value 'Permanently Abandoned'\n", - " \"filter\": {\n", - " \"nested\": {\n", - " # Direct relation to instances with properties in Asset view through 'parent' property\n", - " \"scope\": [\n", - " asset_vid.space,\n", - " f\"{asset_vid.external_id}/{asset_vid.version}\",\n", - " \"parent\",\n", - " ],\n", - " # Filter by 'tags' property in Asset view\n", - " \"filter\": {\n", - " \"containsAll\": {\n", - " \"property\": [\n", - " asset_vid.space,\n", - " f\"{asset_vid.external_id}/{asset_vid.version}\",\n", - " \"aliases\",\n", - " ],\n", - " # Value to filter by\n", - " \"values\": [\"AC\"],\n", - " },\n", - " },\n", - " },\n", - " },\n", - " },\n", - " },\n", - " \"equipment\": {\n", - " # equivalent to FROM all Nodes in the project WHERE 'asset' of instances with properties\n", - " # in the Equipment view has a tag 'Permanently Abandoned'\n", - " \"limit\": 1000, # default limit is 100\n", - " \"nodes\": {\n", - " \"filter\": {\n", - " \"nested\": {\n", - " # Direct relation to instances with properties in Equipment view through 'asset' property\n", - " \"scope\": [\n", - " eq_vid.space,\n", - " f\"{eq_vid.external_id}/{eq_vid.version}\",\n", - " \"asset\",\n", - " ],\n", - " \"filter\": {\n", - " # Filter by 'tags' property in Equipment view\n", - " \"containsAll\": {\n", - " \"property\": [\n", - " eq_vid.space,\n", - " f\"{eq_vid.external_id}/{eq_vid.version}\",\n", - " \"tags\",\n", - " ],\n", - " \"values\": [\"Permanently Abandoned\"],\n", - " },\n", - " },\n", - " },\n", - " },\n", - " },\n", - " },\n", - " },\n", - " \"select\": {\n", - " \"asset\": {\n", - " \"sources\": [\n", - " {\n", - " \"source\": {\n", - " \"type\": \"view\",\n", - " \"space\": asset_vid.space,\n", - " \"externalId\": asset_vid.external_id,\n", - " \"version\": asset_vid.version,\n", - " },\n", - " \"properties\": [\"*\"], # All properties\n", - " },\n", - " ],\n", - " },\n", - " \"equipment\": {\n", - " \"sources\": [\n", - " {\n", - " \"source\": {\n", - " \"type\": \"view\",\n", - " \"space\": eq_vid.space,\n", - " \"externalId\": eq_vid.external_id,\n", - " \"version\": eq_vid.version,\n", - " },\n", - " \"properties\": [\"*\"], # All properties\n", - " },\n", - " ],\n", - " },\n", - " },\n", - " \"debug\": {},\n", - "}\n", - "@retry_cognite\n", - "def _post_query(payload: dict) -> dict:\n", - " \"\"\"POST the raw JSON query, raising CogniteAPIError on HTTP errors so retry can kick in.\"\"\"\n", - " response = client.post(\n", - " url=f\"/api/v1/projects/{client.config.project}/models/instances/query\",\n", - " json=payload,\n", - " )\n", - " # client.post returns a requests.Response - convert non-2xx into CogniteAPIError\n", - " if response.status_code >= 400:\n", - " try:\n", - " body = response.json()\n", - " message = body.get(\"error\", {}).get(\"message\", response.text)\n", - " except ValueError:\n", - " message = response.text\n", - " raise CogniteAPIError(message=message, code=response.status_code)\n", - " return response.json()\n", - "\n", - "\n", - "try:\n", - " body = _post_query(json_query)\n", - " assets = body[\"items\"][\"asset\"]\n", - " equipments = body[\"items\"][\"equipment\"]\n", - " print(f\"asset (count={len(assets)}): {assets}\")\n", - " print(f\"equipment (count={len(equipments)}): {equipments}\")\n", - " print(\"debug:\", body.get(\"debug\"))\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, - { - "cell_type": "markdown", - "id": "592dabf5", - "metadata": {}, - "source": [ - "# Timeseries, activities, files\n", - "## Retrive timeseries related to an asset\n", - "Activities and files can be returned the same way.\n", - "\n", - "The main problem here is that there is no way to extract assets and then use them to find the related timeseries. It is not possible because\n", - "- the properties holding node references pointing to assets are lists of direct relations\n", - "- reverse lists of direct relations cannot be queried\n", - "\n", - "If your use case requires traversing multiple nodes both ways and lists of direct relations do not fulfill the requirements - that's when you need edges. Another way is to chain the queries outside of 'query' structure (query -> get result -> use in next query)" + "text/plain": [ + "" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a269d539", - "metadata": {}, - "outputs": [], - "source": [ - "# Replace external_id with a real Tag external_id from your project.\n", - "# Tip: run the list-assets cell above and copy any Tag's externalId here.\n", - "asset_id = NodeId(space=INST_SP, external_id=\"PLTF-EW1003A (Prince)-811\")\n", - "print(asset_id.dump(include_instance_type=False))\n", - "query = Query(\n", - " with_={\n", - " \"timeseries\": NodeResultSetExpression(\n", - " filter=ContainsAll(property=ts_vid.as_property_ref(\"assets\"), values={\"parameter\": \"asset\"}),\n", - " limit=500,\n", - " ),\n", - " },\n", - " select={\n", - " \"timeseries\": Select(\n", - " [\n", - " SourceSelector(\n", - " source=ts_vid,\n", - " properties=[\"name\", \"description\", \"source\", \"unit\", \"assets\", \"equipment\", \"activities\"],\n", - " ),\n", - " ],\n", - " ),\n", - " },\n", - " parameters={\"asset\": [asset_id.dump(include_instance_type=False)]},\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(res[\"timeseries\"])\n", - " print(len(res[\"timeseries\"]))\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, - { - "cell_type": "markdown", - "id": "59fa64a1", - "metadata": {}, - "source": [ - "## Retrieve activities of a timeseries and equipment related to these activities" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "79bf3bbe", - "metadata": {}, - "outputs": [], - "source": [ - "# Replace external_id with a real TimeSeriesData externalId from your project.\n", - "timeseries_id = NodeId(space=INST_SP, external_id=\"CUMULATIVE_BOE_PER_DAY_TS_6081740998\")\n", - "query = Query(\n", - " with_={\n", - " \"activities\": NodeResultSetExpression(\n", - " filter=ContainsAll(\n", - " property=wo_vid.as_property_ref(\"timeSeries\"),\n", - " values={\"parameter\": \"timeseries\"},\n", - " ),\n", - " limit=100,\n", - " ),\n", - " \"equipment_activities\": NodeResultSetExpression(\n", - " from_=\"activities\",\n", - " through=wo_vid.as_property_ref(\"equipment\"), # must be a property reference\n", - " limit=10,\n", - " ),\n", - " },\n", - " select={\n", - " \"activities\": Select(\n", - " [\n", - " SourceSelector(\n", - " source=wo_vid,\n", - " properties=[\"name\", \"description\", \"source\", \"assets\", \"equipment\"],\n", - " ),\n", - " ],\n", - " ),\n", - " \"equipment_activities\": Select(\n", - " [\n", - " SourceSelector(\n", - " source=eq_vid,\n", - " properties=[\"name\", \"description\", \"source\"],\n", - " ),\n", - " ],\n", - " ),\n", - " },\n", - " parameters={\"timeseries\": [timeseries_id.dump(include_instance_type=False)]},\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(res[\"activities\"])\n", - " print(res[\"equipment_activities\"])\n", - " print(\"returned activities:\", len(res[\"activities\"]))\n", - " print(\"returned equipment activities:\", len(res[\"equipment_activities\"]))\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)" - ] - }, - { - "cell_type": "markdown", - "id": "36d12972", - "metadata": {}, - "source": [ - "## Retrieve equipment associated with an asset\n", - "\n", - "You can retrieve equipment related to an asset through the 'asset' property in the Equipment.\n", - "This is useful when trying to get the equipment instances associated with assets of a certain type or class\n", - "or extensions of CogniteAsset with some properties.\n", - "\n", - "Not that it only works with Equipment - all other Asset entity relationships (to files, timeseries, activities)\n", - "are Reverse **Lists** of direct relations, meaning they cannot be traversed inwards. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7404618c", - "metadata": {}, - "outputs": [], - "source": [ - "# Adjust these to values that actually exist in your project. Try the \"list assets\"\n", - "# cell first to see real `tags` and the `equipmentClass` values present on Equipment.\n", - "asset_tags = [\"AC901\"]\n", - "equipment_class = \"Casing\"\n", - "\n", - "query = Query(\n", - " with_={\n", - " \"assets\": NodeResultSetExpression(\n", - " # FROM all Nodes WHERE tags contains all of asset_tags\n", - " filter=ContainsAll(property=asset_vid.as_property_ref(\"tags\"), values={\"parameter\": \"asset_tags\"}),\n", - " limit=500,\n", - " ),\n", - " \"equipment\": NodeResultSetExpression(\n", - " from_=\"assets\",\n", - " through=eq_vid.as_property_ref(\"asset\"),\n", - " direction=\"inwards\",\n", - " # Equipment has an `equipmentClass` text property in this model,\n", - " # so we filter directly instead of using a Nested filter through\n", - " # the `equipmentType` direct relation (which would require the\n", - " # cdf_cdm:CogniteEquipmentType view to be installed).\n", - " filter=Equals(\n", - " property=eq_vid.as_property_ref(\"equipmentClass\"),\n", - " value={\"parameter\": \"equipmentClass\"},\n", - " ),\n", - " limit=500,\n", - " ),\n", - " },\n", - " select={\n", - " \"assets\": Select(\n", - " [SourceSelector(source=asset_vid, properties=[\"name\", \"description\", \"tags\"])]\n", - " ),\n", - " \"equipment\": Select(\n", - " [SourceSelector(source=eq_vid, properties=[\"name\", \"description\", \"asset\", \"equipmentClass\", \"class\", \"type\"])]\n", - " ),\n", - " },\n", - " parameters={\"equipmentClass\": equipment_class, \"asset_tags\": asset_tags},\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(f\"assets (count={len(res['assets'])}): {res['assets']}\")\n", - " print(f\"equipment (count={len(res['equipment'])}): {res['equipment']}\")\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asset_external_id = \"VAL-PH-23-WT\"\n", + "space = INST_SP\n", + "client.data_modeling.instances.retrieve_nodes(\n", + " NodeId(space, asset_external_id),\n", + " # NOTE: `cdf_cdm` is not installed in this project. The original example added\n", + " # cognite_asset_vid and describable_vid here to retrieve the same node viewed\n", + " # through CDM. Add additional view IDs (e.g. asset_vid and any view that 'implements'\n", + " # it, like FunctionalLocation) here if you want multi-view hydration.\n", + " sources=[asset_vid],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "7ea3b8cc", + "metadata": {}, + "source": [ + "### The same call using query SDK" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "7802256c", + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "id": "10143a85", - "metadata": {}, - "source": [ - "# Using the cursor\n", - "\n", - "For completion, the methods below can be used to paginate with the instantiated query.\n", - "\n", - "Examples of usage and considerations are TBD" - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"VAL-PH-23-WT\",\n", + " \"version\": 35,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"VAL-PH-23\"\n", + " },\n", + " \"name\": \"Water Treatment System\",\n", + " \"tags\": [\n", + " \"functional-location\"\n", + " ],\n", + " \"description\": \"Seawater and chemical injection\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "]\n" + ] + } + ], + "source": [ + "asset_external_id = \"VAL-PH-23-WT\"\n", + "# Note: SpaceFilter does not accept {\"parameter\": ...} - use Equals((\"node\", \"space\"), ...)\n", + "# if you need to parameterize space. See \"parent / children\" example below.\n", + "query = Query(\n", + " with_={ # FROM all Nodes WHERE space = INST_SP and externalId = CNY-AC\n", + " \"assets\": NodeResultSetExpression(\n", + " filter=And(\n", + " Equals([\"node\", \"externalId\"], value=asset_external_id),\n", + " SpaceFilter(space=INST_SP),\n", + " ),\n", + " ),\n", + " },\n", + " select={\n", + " # seeing the same instance through multiple views - request only the properties you need\n", + " \"assets\": Select(\n", + " [\n", + " SourceSelector(asset_vid, [\"name\", \"description\", \"tags\", \"parent\"]),\n", + " # CDM views (cognite_asset_vid, describable_vid) are not installed\n", + " # in this project. Add other project view IDs here if needed.\n", + " ],\n", + " ),\n", + " },\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(res[\"assets\"])\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "markdown", + "id": "0c6dea9a", + "metadata": {}, + "source": [ + "## Get parent and/or children of an asset\n", + "\n", + "### Note that you can use this logic for any kind of **single** direct relations (and their reverse). For example, you can retrieve the type of the asset (see below)\n", + "\n", + "This way, you can traverse a graph using direct relations" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "cb9d9653", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "id": "094a330c", - "metadata": {}, - "outputs": [], - "source": [ - "# Cursor-based pagination for data model queries (inspired by the Yggdrasil team).\n", - "# Uses run_sync (retry-wrapped /sync) so transient 408/429/5xx are handled transparently.\n", - "\n", - "def get_data(\n", - " client: CogniteClient,\n", - " query: Query,\n", - " max_iterations: int | None = 100,\n", - ") -> tuple[dict[str, list[NodeListWithCursor | EdgeListWithCursor]], dict[str, str]]:\n", - " \"\"\"Cursor based pagination for data model queries.\n", - "\n", - " The query object's cursors are updated in-place so the same query can be resumed.\n", - "\n", - " Args:\n", - " client: The Cognite client to use for making the query.\n", - " query: The query to fetch data from CDF data model.\n", - " max_iterations: Maximum number of pages to fetch. Use None or -1 for no limit.\n", - "\n", - " Returns:\n", - " A tuple of (collected_data, final_cursors). final_cursors is empty when the\n", - " result set is fully drained.\n", - " \"\"\"\n", - " if any(c for c in (query.cursors or {}).values()):\n", - " print(\"Cursors already set in query, continuing retrieval.\")\n", - "\n", - " collected_data: dict[str, list] = defaultdict(list)\n", - " current_iteration = 0\n", - " if max_iterations is None or max_iterations == -1:\n", - " max_iterations = float(\"inf\")\n", - "\n", - " res = None\n", - " while current_iteration < max_iterations:\n", - " res = run_sync(client, query)\n", - "\n", - " if res is None:\n", - " if not collected_data:\n", - " print(\"No data returned, exiting loop.\")\n", - " return {}, {}\n", - " print(\"Query failed, but returning collected data so far.\")\n", - " return collected_data, {}\n", - "\n", - " # Empty page across all selections = fully drained (cursor still kept for resume).\n", - " if all(not res.data[selection] for selection in res.data):\n", - " print(\"No more data available, exiting loop.\")\n", - " return collected_data, {}\n", - "\n", - " for selection in res.data:\n", - " collected_data[selection].extend(res.data[selection])\n", - "\n", - " query.cursors = res.cursors\n", - " current_iteration += 1\n", - "\n", - " print(f\"Collected data for {current_iteration} iterations.\")\n", - " return collected_data, (res.cursors if res is not None else {})" - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "asset: [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XX-9105\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", + " },\n", + " \"name\": \"23-XX-9105\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - 1ST STAGE SUCTION/DISCHARGE COOLER SKID\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "]\n", + "parent: [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-1ST STAGE COMPRESSION-PH\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"230900\"\n", + " },\n", + " \"name\": \"23-1ST STAGE COMPRESSION-PH\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"1ST STAGE COMPRESSION ON PH\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "]\n", + "children: [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"90-MX-9245\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XX-9105\"\n", + " },\n", + " \"name\": \"90-MX-9245\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - MONORAIL OVER WALKWAY FOR EQUIPMENT ON SKID 23-XX-9105\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HA-9103\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XX-9105\"\n", + " },\n", + " \"name\": \"23-HA-9103\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - 1ST STAGE SUCTION COOLER\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HA-9114\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XX-9105\"\n", + " },\n", + " \"name\": \"23-HA-9114\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - 1ST STAGE DISCHARGE COOLER 1\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HA-9115\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-XX-9105\"\n", + " },\n", + " \"name\": \"23-HA-9115\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - 1ST STAGE DISCHARGE COOLER 2\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "] (count=4)\n", + "further_children: [\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PDT-92501\",\n", + " \"version\": 30,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", + " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", + " \"tags\": [\n", + " \"instrument-equipment\"\n", + " ],\n", + " \"description\": \"Differential pressure transmitter suction cooler\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92609\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-HV-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92613\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-PSV-92613\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92607B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-TT-92607B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-XV-92748\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-XV-92748\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH OFFGAS TO 1STSTGSUCTCOOLER\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDT-92506\",\n", + " \"version\": 27,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PDT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PDT-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-PDT-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL CM\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-FT-92512\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-FT-92512\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-HV-92545\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-HV-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL YSV OUTLET\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PDT-92502\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-PDT-92502\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL TUBES\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PDT-92602\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-PDT-92602\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1ST STG DISCH GAS COOLERS\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PV-92538\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-PV-92538\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGCOMP SUCTION STV\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92502\",\n", + " \"version\": 26,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-TT-92502\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92603\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-TT-92603\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL GAS OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ESDV-92551B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-ESDV-92551B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCHCLR GAS OUT EQ\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PT-92504\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-PT-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-92604B\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-TE-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-PT-92512\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-PT-92512\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TT-92512\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-TT-92512\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92609\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-PT-92609\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL CM OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-TT-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCLR COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TV-92504\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-TV-92504\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL CM IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TV-92604B\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-TV-92604B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSV-92545\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-YSV-92545\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCHCOOLER B/D\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92510S\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PSV-92510S\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92514\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PSV-92514\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1ST STG SUCT COOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92607A\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-TT-92607A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ESDV-92501A\",\n", + " \"version\": 23,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-ESDV-92501A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCLR GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92510-01\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-HV-92510-01\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL PSV IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92510-03\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-HV-92510-03\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL PSV OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92612\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-PSV-92612\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92608\",\n", + " \"version\": 24,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9115\"\n", + " },\n", + " \"name\": \"45-PT-92608\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL CM OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FT-92506\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-FT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ESDV-92501B\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-ESDV-92501B\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCLR GAS IN EQUAL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-FV-92543\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-FV-92543\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGCOMP ANTI-SURGE\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-ESDV-92551A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-ESDV-92551A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCHCLR GAS OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-HV-92509\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-HV-92509\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PT-92508\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PT-92508\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED OUT\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-TT-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED SPLY\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-TE-92604A\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"23-TE-92604A\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"23-YSV-92445\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"23-YSV-92445\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-FE-92606\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9114\"\n", + " },\n", + " \"name\": \"45-FE-92606\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-PSV-92515\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-PSV-92515\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1ST STG SUCT COOL SHELL\"\n", + " }\n", + " }\n", + " }\n", + " },\n", + " {\n", + " \"space\": \"inst_location\",\n", + " \"external_id\": \"45-TT-92506\",\n", + " \"version\": 25,\n", + " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", + " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", + " \"instance_type\": \"node\",\n", + " \"properties\": {\n", + " \"cdf_cdm\": {\n", + " \"CogniteAsset/v1\": {\n", + " \"parent\": {\n", + " \"space\": \"inst_location\",\n", + " \"externalId\": \"23-HA-9103\"\n", + " },\n", + " \"name\": \"45-TT-92506\",\n", + " \"tags\": [\n", + " \"tag\"\n", + " ],\n", + " \"description\": \"VRD - PH 1STSTGSUCTCLR COOLMED SPLY\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + "] (count=44)\n", + "type: []\n" + ] + } + ], + "source": [ + "# asset_eid = \"WLL-6080740225\"\n", + "asset_eid = \"23-XX-9105\"\n", + "# Tip: parameterise space with Equals((\"node\",\"space\"), {\"parameter\": \"space\"}) - SpaceFilter\n", + "# does not currently accept {\"parameter\": \"...\"}.\n", + "ASSET_PROPS = [\"name\", \"description\", \"source\", \"parent\", \"tags\"]\n", + "query = Query(\n", + " with_={ # FROM all Nodes WHERE space = INST_SP and externalId = CNY-AC\n", + " \"asset\": NodeResultSetExpression(\n", + " filter=And(\n", + " Equals(property=(\"node\", \"externalId\"), value=asset_eid),\n", + " Equals(property=(\"node\", \"space\"), value={\"parameter\": \"space\"}),\n", + " ),\n", + " ),\n", + " \"parent\": NodeResultSetExpression(\n", + " from_=\"asset\",\n", + " through=asset_vid.as_property_ref(\"parent\"),\n", + " direction=\"outwards\",\n", + " ),\n", + " \"children\": NodeResultSetExpression(\n", + " from_=\"asset\",\n", + " through=asset_vid.as_property_ref(\"parent\"),\n", + " direction=\"inwards\",\n", + " ),\n", + " \"further_children\": NodeResultSetExpression(\n", + " from_=\"children\",\n", + " through=asset_vid.as_property_ref(\"parent\"),\n", + " direction=\"inwards\",\n", + " ),\n", + " \"type\": NodeResultSetExpression(\n", + " from_=\"asset\",\n", + " through=asset_vid.as_property_ref(\"type\"),\n", + " direction=\"outwards\",\n", + " ),\n", + " },\n", + " select={\n", + " \"asset\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", + " \"parent\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", + " \"children\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", + " \"further_children\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", + " \"type\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", + " },\n", + " parameters={\"space\": INST_SP},\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(f\"asset: {res['asset']}\")\n", + " print(f\"parent: {res['parent']}\")\n", + " print(f\"children: {res['children']} (count={len(res['children'])})\")\n", + " print(f\"further_children: {res['further_children']} (count={len(res['further_children'])})\")\n", + " print(f\"type: {res['type']}\")\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "d108767b", + "metadata": {}, + "source": [ + "## Using the Nested filter\n", + "\n", + "Nested filter allows to use property of the directly related View to filter the instances. The filter can be applied only to single direct relations. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e313608d", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "id": "05fb2590", - "metadata": {}, - "outputs": [], - "source": [ - "# The retry helpers (retry_cognite, run_query, run_sync, log_api_error) are defined\n", - "# at the top of this notebook, right after client setup. Use them for any new query:\n", - "#\n", - "# try:\n", - "# res = run_query(client, query) # /query with retry\n", - "# # or\n", - "# res = run_sync(client, query) # /sync with retry (for cursor pagination)\n", - "# except CogniteAPIError as e:\n", - "# log_api_error(e)\n", - "#\n", - "# For cursor-paginated traversal of large result sets, use get_data(client, query)\n", - "# defined in the cell above - it calls run_sync internally." - ] + "name": "stdout", + "output_type": "stream", + "text": [ + "asset (count=98):\n", + " VAL-PH-23-EL name='Electrical Distribution'\n", + " VAL-PH-23-GC name='Gas Compression System'\n", + " VAL-PH-23-UT name='Utilities System'\n", + " VAL-PH-23-WT name='Water Treatment System'\n", + " VAL-PH-48 name='Area 48 Subsea Systems'\n", + " 626221d1-e8f3-4761-97bd-239e013c7f75 name='Module Support Structure'\n", + " 6b0eb178-2c4f-4fca-901b-2c59bf812582 name='Instrument Equipment Room'\n", + " a4b91d72-0d1b-4902-a8d4-98dfcbeabf70 name='1st Stage Safety Relief Valve'\n", + " cd5759fc-0fa0-4ce3-9831-47529722f738 name='2nd Stage Suction ESDV'\n", + " 0192bf8a-c9a6-4f47-b491-208e6c11e351 name='1st Stage Suction Line 16in'\n", + " 1d338ea3-7841-43fc-afe6-702966cbbffc name='Seawater Lift Pump B'\n", + " 4d839ff3-3a8f-4258-81d5-08409cdf2475 name='Portable Gas Detector'\n", + " 6767827c-f362-4b04-b303-fb5669ecab2b name='Subsea Manifold'\n", + " a86482db-1947-43e7-9781-67c6bc38ad09 name='MV Motor 1st Stage Compressor Drive'\n", + " e3e89763-dd36-4823-9738-17d9a4fecd02 name='PA/GA System Process Area'\n", + " 056df394-acc1-4b71-9897-0053e2aec3b0 name='Hydraulic Torque Wrench 3/4in'\n", + " 2a804545-b201-4985-822f-45c14ac0d1a5 name='Electrical Equipment Room'\n", + " 423da2b8-3e47-4e1b-8139-c773f19508b2 name='Subsea Christmas Tree Well-1'\n", + " 51afd982-edb1-4b71-a157-91e3a0d8085f name='1st Stage Discharge Cooler'\n", + " 8e337b6f-be72-416e-bef0-3308975ae627 name='VFD 1st Stage Compressor'\n", + " af455e61-124c-46e9-9c9d-e962555a917c name='1st Stage Performance Control Valve'\n", + " e43970f2-a955-44c7-beac-8f66eb2ae85d name='Lube Oil Cooler'\n", + " 3ced891b-185a-4be3-be88-79ff4410ee8c name='PH 1st Stage Gas Compressor'\n", + " b1fc60ab-b304-4d80-a737-ec43765620c5 name='Platform Main Deck'\n", + " c754af3e-9ad6-40fc-95aa-4ab7e12655be name='2nd Stage Suction Line 12in'\n", + " 238afe07-ae83-4b30-998c-d6e58b5c07c4 name='Emergency Shower Station'\n", + " a8c58534-b905-4f84-b987-5e7a4881f26b name='Top Drive System'\n", + " b3a5cc09-85d8-4196-a95f-61e2db77b49a name='1st Stage Scrubber Level Transmitter'\n", + " d271d97b-d105-49c2-977d-ec812b290554 name='Scaffolding Kit A'\n", + " dda44393-0a89-4654-a84f-af33ba19b93a name='Chemical Injection Pump'\n", + " 8b16b072-2c1c-4cd1-a13b-a70821d770e4 name='Process Hall Overhead Crane 10T'\n", + " a98260bd-c718-446c-901a-913809d4f095 name='Gas Turbine Generator B'\n", + " df052853-f39c-405b-a275-33768b91c623 name='Gas Turbine Generator A'\n", + " 5e0ae159-18b3-4970-88b7-9dd8995fcc5e name='Lifting Sling Assembly'\n", + " 9266fab7-6edf-4411-a0a2-3074e322853f name='1st Stage Suction Cooler dP Transmitter'\n", + " 94ccd3cc-48de-46d5-a9ec-890a78c5d716 name='1st Stage Suction Pressure Transmitter'\n", + " c39906ea-0a81-4cb0-a002-9658b8846a38 name='Subsea Control Module A'\n", + " 04d754eb-8ddd-4ea4-9b01-82365b85cfc2 name='Gas Detection System'\n", + " 0912fe96-a0f5-4fec-b3d8-8446cd03e230 name='Gas Export Line 24in'\n", + " 839e57a0-6765-4bd4-b7d7-1dfde9c1d969 name='PH 3rd Stage Gas Compressor'\n", + " c9a063b9-f0d1-433b-8c80-bdaaf1d949f5 name='PH 2nd Stage Gas Compressor'\n", + " 27f56b30-4aa3-4db9-8cdd-6d5ba4d84566 name='Deluge Fire Protection Station A'\n", + " 6ead339e-d534-4778-a891-9312b2f6108e name='Helideck'\n", + " ad443509-4fdb-4114-82a5-aa79bda20271 name='Turbine Hall Overhead Crane 5T'\n", + " ccdafea7-5bf0-4d40-924e-3f786b44e9a3 name='UPS System Process Hall'\n", + " 47d4a39c-7c0b-46bb-a290-c47a7528dfef name='1st Stage Gear Thrust Bearing Temp'\n", + " 682ec198-fcb1-4d86-b50d-34b1a8f48fe7 name='2nd Stage Suction Cooler'\n", + " 8819a855-4229-4cb0-a975-967c6c3d935b name='1st Stage Suction ESDV'\n", + " 933aa789-5571-48bf-91a3-234f2a66522e name='Network Switch Cabinet A'\n", + " 9e64206b-39d2-442f-bd80-4864ee58104d name='Drilling Derrick Assembly'\n", + " d28a5c2c-2800-4370-8c77-6647a45b1cb0 name='1st Stage Compressor Flow Transmitter'\n", + " f4af554c-57aa-4043-ad2b-263aa9e34485 name='Seawater Lift Pump A'\n", + " 23-KA-9102 name='PH 2nd Stage Gas Compressor'\n", + " 23-PSV-92550 name='1st Stage Discharge Safety Relief Valve'\n", + " 23-EA-9501 name='1st Stage Discharge Cooler'\n", + " 23-EL-9701 name='MV Motor 1st Stage Compressor Drive'\n", + " 23-PT-92501 name='1st Stage Suction Pressure Transmitter'\n", + " 23-XV-92501 name='1st Stage Suction ESDV'\n", + " 48-SU-8501 name='Subsea Control Module A'\n", + " 23-GT-9401 name='Gas Turbine Generator A'\n", + " 23-PA-9201A name='Seawater Lift Pump A'\n", + " 23-L-92701 name='Gas Export Line 24in'\n", + " 48-SU-8502 name='Subsea Christmas Tree Well-1'\n", + " 48-SU-8503 name='Subsea Manifold'\n", + " 23-PCV-92538 name='1st Stage Anti-Surge Control Valve'\n", + " 23-XV-92601 name='2nd Stage Suction ESDV'\n", + " 23-EA-9502 name='2nd Stage Discharge Cooler'\n", + " 23-EA-9503 name='Lube Oil Cooler'\n", + " 23-PA-9201B name='Seawater Lift Pump B'\n", + " 23-FT-92537 name='1st Stage Compressor Flow Transmitter'\n", + " 23-GT-9402 name='Gas Turbine Generator B'\n", + " 23-KA-9103 name='PH 3rd Stage Gas Compressor'\n", + " 23-L-92501 name='1st Stage Suction Line 16in'\n", + " 23-L-92601 name='2nd Stage Suction Line 12in'\n", + " 23-TT-96115-01 name='1st Stage Gear Thrust Bearing Temperature'\n", + " VAL-PH-23 name='Area 23 Gas Compression'\n", + " 23-TL-8602 name='Portable Gas Detector'\n", + " 23-DR-9902 name='Top Drive System'\n", + " 23-EL-9703 name='VFD 1st Stage Compressor'\n", + " 23-IT-8302 name='PA/GA System Process Area'\n", + " 23-ME-9802 name='Turbine Hall Overhead Crane 5T'\n", + " 23-EN-8001 name='Electrical Equipment Room'\n", + " 23-EN-8002 name='Instrument Equipment Room'\n", + " 23-IF-8201 name='Platform Main Deck'\n", + " 23-IF-8202 name='Module Support Structure'\n", + " 23-MI-8402 name='Scaffolding Kit A'\n", + " 23-EL-9702 name='UPS System Process Hall'\n", + " 23-DR-9901 name='Drilling Derrick Assembly'\n", + " 23-HS-8103 name='Gas Detection System'\n", + " 23-IT-8301 name='Network Switch Cabinet A'\n", + " 23-MI-8401 name='Lifting Sling Assembly'\n", + " 23-PA-9202 name='Chemical Injection Pump MEG'\n", + " 23-IF-8203 name='Helideck'\n", + " 23-ME-9801 name='Process Hall Overhead Crane 10T'\n", + " 23-HS-8101 name='Deluge Fire Protection Station A'\n", + " 23-HS-8102 name='Emergency Shower Station'\n", + " 23-TL-8601 name='Hydraulic Torque Wrench 3/4in'\n", + " 230900 name='230900'\n", + "equipment (count=20):\n", + " ab0ea3c4-b606-4e41-bad9-2ad0fb432c41 name='PH 1st Stage Gas Compressor'\n", + " cc3e885d-0b7f-4fc4-923d-510b40981e1d name='PH 2nd Stage Gas Compressor'\n", + " eff69eed-b9e9-427e-bf15-aa3cf93c43fb name='1st Stage Safety Relief Valve'\n", + " 2191ae23-2f42-4ccf-9060-29c4ddf67290 name='1st Stage Discharge Cooler'\n", + " 1b8f2e53-31aa-4eb8-b607-5383bfdd0c9f name='1st Stage Suction Pressure Transmitter'\n", + " 4ac9c8c0-1f44-4b21-bf2d-35614dcf7947 name='1st Stage Suction ESDV'\n", + " 89b47807-1a43-4f79-847e-d0633e0b7f9f name='MV Motor 1st Stage Compressor Drive'\n", + " efdeed77-abfe-4a63-a5e9-e87d874063d3 name='Subsea Control Module A'\n", + " ec68ec70-ea1c-409d-a73c-62819123eb3e name='Gas Turbine Generator A'\n", + " fe996ac6-9669-4853-a9ea-779e4ca40360 name='Seawater Lift Pump A'\n", + " EQ-VA-9301 name='1st Stage Suction ESDV'\n", + " EQ-KA-9102 name='PH 2nd Stage Gas Compressor'\n", + " EQ-PA-9201A name='Seawater Lift Pump A'\n", + " EQ-GT-9401 name='Gas Turbine Generator A'\n", + " EQ-PT-92501 name='1st Stage Suction Pressure Transmitter'\n", + " EQ-SU-8501 name='Subsea Control Module A'\n", + " EQ-EL-9701 name='MV Motor 1st Stage Compressor Drive'\n", + " EQ-KA-9101 name='PH 1st Stage Gas Compressor'\n", + " EQ-PSV-92550 name='1st Stage Safety Relief Valve'\n", + " EQ-EA-9501 name='1st Stage Discharge Cooler'\n" + ] } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.14.2" + ], + "source": [ + "query = Query(\n", + " with_={\n", + " \"asset\": NodeResultSetExpression(\n", + " # Tags whose PARENT TAG has 'functional-location' in its tags property.\n", + " # Why parent? Nested can only filter through single-valued direct relations.\n", + " # On Tag, `parent` is the only single DR to another Tag.\n", + " filter=Nested(\n", + " scope=asset_vid.as_property_ref(\"parent\"),\n", + " filter=ContainsAll(\n", + " property=asset_vid.as_property_ref(\"tags\"),\n", + " values=[\"functional-location\"],\n", + " ),\n", + " ),\n", + " limit=500,\n", + " ),\n", + " \"equipment\": NodeResultSetExpression(\n", + " # FROM all Equipment WHERE asset (a direct relation to a Tag) has sourceContext == \"cfihos_test\"\n", + " filter=Nested(\n", + " scope=eq_vid.as_property_ref(\"asset\"),\n", + " filter=Equals(\n", + " property=asset_vid.as_property_ref(\"sourceContext\"),\n", + " value=\"cfihos_test\",\n", + " ),\n", + " ),\n", + " limit=500,\n", + " ),\n", + " },\n", + " select={\n", + " \"asset\": Select(\n", + " [SourceSelector(source=asset_vid, properties=[\"name\", \"description\", \"tags\", \"parent\"])]\n", + " ),\n", + " \"equipment\": Select(\n", + " [SourceSelector(source=eq_vid, properties=[\"name\", \"description\", \"tags\", \"asset\"])]\n", + " ),\n", + " },\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(f\"asset (count={len(res['asset'])}):\")\n", + " for n in res['asset']:\n", + " props = n.properties.get(asset_vid, {}) or {}\n", + " print(f\"ExId={n.external_id} name={props.get('name')!r}\")\n", + " print(f\"equipment (count={len(res['equipment'])}):\")\n", + " for n in res['equipment']:\n", + " props = n.properties.get(eq_vid, {}) or {}\n", + " print(f\"ExId={n.external_id} name={props.get('name')!r}\")\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a7eae73b", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "0c3b5293", + "metadata": {}, + "source": [ + "## The same query as a json object\n", + "\n", + "In some cases you may need to use a json object instead of SDK for querying" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "c75cab47", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "asset (count=0): []\n", + "equipment (count=0): []\n", + "debug: {'notices': []}\n" + ] } + ], + "source": [ + "# JSON representation of the Nested filter query\n", + "json_query = {\n", + " \"with\": {\n", + " \"asset\": { # identifier of the item to retrieve\n", + " \"limit\": 1000, # default limit is 100\n", + " \"nodes\": { # equivalent to FROM all Nodes in the project WHERE 'parent' of instances with properties\n", + " # in the Asset view has 'tags' property with value 'Permanently Abandoned'\n", + " \"filter\": {\n", + " \"nested\": {\n", + " # Direct relation to instances with properties in Asset view through 'parent' property\n", + " \"scope\": [\n", + " asset_vid.space,\n", + " f\"{asset_vid.external_id}/{asset_vid.version}\",\n", + " \"parent\",\n", + " ],\n", + " # Filter by 'tags' property in Asset view\n", + " \"filter\": {\n", + " \"containsAll\": {\n", + " \"property\": [\n", + " asset_vid.space,\n", + " f\"{asset_vid.external_id}/{asset_vid.version}\",\n", + " \"aliases\",\n", + " ],\n", + " # Value to filter by\n", + " \"values\": [\"AC\"],\n", + " },\n", + " },\n", + " },\n", + " },\n", + " },\n", + " },\n", + " \"equipment\": {\n", + " # equivalent to FROM all Nodes in the project WHERE 'asset' of instances with properties\n", + " # in the Equipment view has a tag 'Permanently Abandoned'\n", + " \"limit\": 1000, # default limit is 100\n", + " \"nodes\": {\n", + " \"filter\": {\n", + " \"nested\": {\n", + " # Direct relation to instances with properties in Equipment view through 'asset' property\n", + " \"scope\": [\n", + " eq_vid.space,\n", + " f\"{eq_vid.external_id}/{eq_vid.version}\",\n", + " \"asset\",\n", + " ],\n", + " \"filter\": {\n", + " # Filter by 'tags' property in Equipment view\n", + " \"containsAll\": {\n", + " \"property\": [\n", + " eq_vid.space,\n", + " f\"{eq_vid.external_id}/{eq_vid.version}\",\n", + " \"tags\",\n", + " ],\n", + " \"values\": [\"Permanently Abandoned\"],\n", + " },\n", + " },\n", + " },\n", + " },\n", + " },\n", + " },\n", + " },\n", + " \"select\": {\n", + " \"asset\": {\n", + " \"sources\": [\n", + " {\n", + " \"source\": {\n", + " \"type\": \"view\",\n", + " \"space\": asset_vid.space,\n", + " \"externalId\": asset_vid.external_id,\n", + " \"version\": asset_vid.version,\n", + " },\n", + " \"properties\": [\"*\"], # All properties\n", + " },\n", + " ],\n", + " },\n", + " \"equipment\": {\n", + " \"sources\": [\n", + " {\n", + " \"source\": {\n", + " \"type\": \"view\",\n", + " \"space\": eq_vid.space,\n", + " \"externalId\": eq_vid.external_id,\n", + " \"version\": eq_vid.version,\n", + " },\n", + " \"properties\": [\"*\"], # All properties\n", + " },\n", + " ],\n", + " },\n", + " },\n", + " \"debug\": {},\n", + "}\n", + "@retry_cognite\n", + "def _post_query(payload: dict) -> dict:\n", + " \"\"\"POST the raw JSON query, raising CogniteAPIError on HTTP errors so retry can kick in.\"\"\"\n", + " response = client.post(\n", + " url=f\"/api/v1/projects/{client.config.project}/models/instances/query\",\n", + " json=payload,\n", + " )\n", + " # client.post returns a requests.Response - convert non-2xx into CogniteAPIError\n", + " if response.status_code >= 400:\n", + " try:\n", + " body = response.json()\n", + " message = body.get(\"error\", {}).get(\"message\", response.text)\n", + " except ValueError:\n", + " message = response.text\n", + " raise CogniteAPIError(message=message, code=response.status_code)\n", + " return response.json()\n", + "\n", + "\n", + "try:\n", + " body = _post_query(json_query)\n", + " assets = body[\"items\"][\"asset\"]\n", + " equipments = body[\"items\"][\"equipment\"]\n", + " print(f\"asset (count={len(assets)}): {assets}\")\n", + " print(f\"equipment (count={len(equipments)}): {equipments}\")\n", + " print(\"debug:\", body.get(\"debug\"))\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "markdown", + "id": "592dabf5", + "metadata": {}, + "source": [ + "# Timeseries, activities, files\n", + "## Retrive timeseries related to an asset\n", + "Activities and files can be returned the same way.\n", + "\n", + "The main problem here is that there is no way to extract assets and then use them to find the related timeseries. It is not possible because\n", + "- the properties holding node references pointing to assets are lists of direct relations\n", + "- reverse lists of direct relations cannot be queried\n", + "\n", + "If your use case requires traversing multiple nodes both ways and lists of direct relations do not fulfill the requirements - that's when you need edges. Another way is to chain the queries outside of 'query' structure (query -> get result -> use in next query)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a269d539", + "metadata": {}, + "outputs": [], + "source": [ + "# Replace external_id with a real Tag external_id from your project.\n", + "# Tip: run the list-assets cell above and copy any Tag's externalId here.\n", + "asset_id = NodeId(space=INST_SP, external_id=\"PLTF-EW1003A (Prince)-811\")\n", + "print(asset_id.dump(include_instance_type=False))\n", + "query = Query(\n", + " with_={\n", + " \"timeseries\": NodeResultSetExpression(\n", + " filter=ContainsAll(property=ts_vid.as_property_ref(\"assets\"), values={\"parameter\": \"asset\"}),\n", + " limit=500,\n", + " ),\n", + " },\n", + " select={\n", + " \"timeseries\": Select(\n", + " [\n", + " SourceSelector(\n", + " source=ts_vid,\n", + " properties=[\"name\", \"description\", \"source\", \"unit\", \"assets\", \"equipment\", \"activities\"],\n", + " ),\n", + " ],\n", + " ),\n", + " },\n", + " parameters={\"asset\": [asset_id.dump(include_instance_type=False)]},\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(res[\"timeseries\"])\n", + " print(len(res[\"timeseries\"]))\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "markdown", + "id": "59fa64a1", + "metadata": {}, + "source": [ + "## Retrieve activities of a timeseries and equipment related to these activities" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79bf3bbe", + "metadata": {}, + "outputs": [], + "source": [ + "# Replace external_id with a real TimeSeriesData externalId from your project.\n", + "timeseries_id = NodeId(space=INST_SP, external_id=\"CUMULATIVE_BOE_PER_DAY_TS_6081740998\")\n", + "query = Query(\n", + " with_={\n", + " \"activities\": NodeResultSetExpression(\n", + " filter=ContainsAll(\n", + " property=wo_vid.as_property_ref(\"timeSeries\"),\n", + " values={\"parameter\": \"timeseries\"},\n", + " ),\n", + " limit=100,\n", + " ),\n", + " \"equipment_activities\": NodeResultSetExpression(\n", + " from_=\"activities\",\n", + " through=wo_vid.as_property_ref(\"equipment\"), # must be a property reference\n", + " limit=10,\n", + " ),\n", + " },\n", + " select={\n", + " \"activities\": Select(\n", + " [\n", + " SourceSelector(\n", + " source=wo_vid,\n", + " properties=[\"name\", \"description\", \"source\", \"assets\", \"equipment\"],\n", + " ),\n", + " ],\n", + " ),\n", + " \"equipment_activities\": Select(\n", + " [\n", + " SourceSelector(\n", + " source=eq_vid,\n", + " properties=[\"name\", \"description\", \"source\"],\n", + " ),\n", + " ],\n", + " ),\n", + " },\n", + " parameters={\"timeseries\": [timeseries_id.dump(include_instance_type=False)]},\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(res[\"activities\"])\n", + " print(res[\"equipment_activities\"])\n", + " print(\"returned activities:\", len(res[\"activities\"]))\n", + " print(\"returned equipment activities:\", len(res[\"equipment_activities\"]))\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)" + ] + }, + { + "cell_type": "markdown", + "id": "36d12972", + "metadata": {}, + "source": [ + "## Retrieve equipment associated with an asset\n", + "\n", + "You can retrieve equipment related to an asset through the 'asset' property in the Equipment.\n", + "This is useful when trying to get the equipment instances associated with assets of a certain type or class\n", + "or extensions of CogniteAsset with some properties.\n", + "\n", + "Not that it only works with Equipment - all other Asset entity relationships (to files, timeseries, activities)\n", + "are Reverse **Lists** of direct relations, meaning they cannot be traversed inwards. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7404618c", + "metadata": {}, + "outputs": [], + "source": [ + "# Adjust these to values that actually exist in your project. Try the \"list assets\"\n", + "# cell first to see real `tags` and the `equipmentClass` values present on Equipment.\n", + "asset_tags = [\"AC901\"]\n", + "equipment_class = \"Casing\"\n", + "\n", + "query = Query(\n", + " with_={\n", + " \"assets\": NodeResultSetExpression(\n", + " # FROM all Nodes WHERE tags contains all of asset_tags\n", + " filter=ContainsAll(property=asset_vid.as_property_ref(\"tags\"), values={\"parameter\": \"asset_tags\"}),\n", + " limit=500,\n", + " ),\n", + " \"equipment\": NodeResultSetExpression(\n", + " from_=\"assets\",\n", + " through=eq_vid.as_property_ref(\"asset\"),\n", + " direction=\"inwards\",\n", + " # Equipment has an `equipmentClass` text property in this model,\n", + " # so we filter directly instead of using a Nested filter through\n", + " # the `equipmentType` direct relation (which would require the\n", + " # cdf_cdm:CogniteEquipmentType view to be installed).\n", + " filter=Equals(\n", + " property=eq_vid.as_property_ref(\"equipmentClass\"),\n", + " value={\"parameter\": \"equipmentClass\"},\n", + " ),\n", + " limit=500,\n", + " ),\n", + " },\n", + " select={\n", + " \"assets\": Select(\n", + " [SourceSelector(source=asset_vid, properties=[\"name\", \"description\", \"tags\"])]\n", + " ),\n", + " \"equipment\": Select(\n", + " [SourceSelector(source=eq_vid, properties=[\"name\", \"description\", \"asset\", \"equipmentClass\", \"class\", \"type\"])]\n", + " ),\n", + " },\n", + " parameters={\"equipmentClass\": equipment_class, \"asset_tags\": asset_tags},\n", + ")\n", + "try:\n", + " res = run_query(client, query)\n", + " print(f\"assets (count={len(res['assets'])}): {res['assets']}\")\n", + " print(f\"equipment (count={len(res['equipment'])}): {res['equipment']}\")\n", + "except CogniteAPIError as e:\n", + " log_api_error(e)\n" + ] + }, + { + "cell_type": "markdown", + "id": "10143a85", + "metadata": {}, + "source": [ + "# Using the cursor\n", + "\n", + "For completion, the methods below can be used to paginate with the instantiated query.\n", + "\n", + "Examples of usage and considerations are TBD" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "094a330c", + "metadata": {}, + "outputs": [], + "source": [ + "# Cursor-based pagination for data model queries (inspired by the Yggdrasil team).\n", + "# Uses run_sync (retry-wrapped /sync) so transient 408/429/5xx are handled transparently.\n", + "\n", + "def get_data(\n", + " client: CogniteClient,\n", + " query: Query,\n", + " max_iterations: int | None = 100,\n", + ") -> tuple[dict[str, list[NodeListWithCursor | EdgeListWithCursor]], dict[str, str]]:\n", + " \"\"\"Cursor based pagination for data model queries.\n", + "\n", + " The query object's cursors are updated in-place so the same query can be resumed.\n", + "\n", + " Args:\n", + " client: The Cognite client to use for making the query.\n", + " query: The query to fetch data from CDF data model.\n", + " max_iterations: Maximum number of pages to fetch. Use None or -1 for no limit.\n", + "\n", + " Returns:\n", + " A tuple of (collected_data, final_cursors). final_cursors is empty when the\n", + " result set is fully drained.\n", + " \"\"\"\n", + " if any(c for c in (query.cursors or {}).values()):\n", + " print(\"Cursors already set in query, continuing retrieval.\")\n", + "\n", + " collected_data: dict[str, list] = defaultdict(list)\n", + " current_iteration = 0\n", + " if max_iterations is None or max_iterations == -1:\n", + " max_iterations = float(\"inf\")\n", + "\n", + " res = None\n", + " while current_iteration < max_iterations:\n", + " res = run_sync(client, query)\n", + "\n", + " if res is None:\n", + " if not collected_data:\n", + " print(\"No data returned, exiting loop.\")\n", + " return {}, {}\n", + " print(\"Query failed, but returning collected data so far.\")\n", + " return collected_data, {}\n", + "\n", + " # Empty page across all selections = fully drained (cursor still kept for resume).\n", + " if all(not res.data[selection] for selection in res.data):\n", + " print(\"No more data available, exiting loop.\")\n", + " return collected_data, {}\n", + "\n", + " for selection in res.data:\n", + " collected_data[selection].extend(res.data[selection])\n", + "\n", + " query.cursors = res.cursors\n", + " current_iteration += 1\n", + "\n", + " print(f\"Collected data for {current_iteration} iterations.\")\n", + " return collected_data, (res.cursors if res is not None else {})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "05fb2590", + "metadata": {}, + "outputs": [], + "source": [ + "# The retry helpers (retry_cognite, run_query, run_sync, log_api_error) are defined\n", + "# at the top of this notebook, right after client setup. Use them for any new query:\n", + "#\n", + "# try:\n", + "# res = run_query(client, query) # /query with retry\n", + "# # or\n", + "# res = run_sync(client, query) # /sync with retry (for cursor pagination)\n", + "# except CogniteAPIError as e:\n", + "# log_api_error(e)\n", + "#\n", + "# For cursor-paginated traversal of large result sets, use get_data(client, query)\n", + "# defined in the cell above - it calls run_sync internally." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" }, - "nbformat": 4, - "nbformat_minor": 5 -} + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.14.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file From 7a12f7e29bc4a4eddc906e137645fce78a3f58ce Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Wed, 20 May 2026 09:06:53 +0530 Subject: [PATCH 15/18] Update modules/tools/notebooks/cdf_queries/module.toml Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- modules/tools/notebooks/cdf_queries/module.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/tools/notebooks/cdf_queries/module.toml b/modules/tools/notebooks/cdf_queries/module.toml index 2c700c74..f48a9b47 100644 --- a/modules/tools/notebooks/cdf_queries/module.toml +++ b/modules/tools/notebooks/cdf_queries/module.toml @@ -1,5 +1,5 @@ [module] title = "CDF Query examples" -id = "Query Example Notebook" +id = "query_example_notebook" package_id = "tool" From b258d317f49215880a0f53ac9e08b48187209020 Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Thu, 21 May 2026 08:56:14 +0530 Subject: [PATCH 16/18] Remove PRD.md and cdf_queries notebook module (moved to foundational-dp-prd branch) --- PRD.md | 783 - .../notebook.cdf_query_example.Group.yaml | 26 - .../tools/notebooks/cdf_queries/module.toml | 5 - .../cdf_queries/notebooks/queries.ipynb | 18171 ---------------- 4 files changed, 18985 deletions(-) delete mode 100644 PRD.md delete mode 100644 modules/tools/notebooks/cdf_queries/auth/notebook.cdf_query_example.Group.yaml delete mode 100644 modules/tools/notebooks/cdf_queries/module.toml delete mode 100644 modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb diff --git a/PRD.md b/PRD.md deleted file mode 100644 index 028c1767..00000000 --- a/PRD.md +++ /dev/null @@ -1,783 +0,0 @@ -# PRD: Foundation Deployment Pack (`dp:foundation`) - -## Overview - -The **Foundation Deployment Pack** (`dp:foundation`) is a scalable, modular CDF deployment package that gives industrial projects a near zero-configuration starting point. It covers the full stack from source system extraction through contextualization: production-grade extractor configuration templates for PI, OPC-UA, SAP, DB, and file sources; a choice between ISA Manufacturing Extension and CFIHOS Oil & Gas data models; a modular ingestion orchestration workflow; and contextualization capabilities including file annotation and entity matching. - -Every module is independently deployable. The package supports `canCherryPick = true`, so teams select only the source systems and capabilities they need. Adding a new source system or contextualization step means adding a module — not modifying existing ones. - -All resource naming strictly follows `.cursor/rules/cdf-naming-conventions.mdc`. Each module is fully self-contained — no shared foundation module is required. Auth, datasets, and spaces that a module needs are defined within that module itself. - ---- - -## Background - -### Who is this for? - -The primary users of `dp:foundation` are **Data Engineers (DEs)** and **Cognite partners** who are responsible for standing up CDF environments for industrial customers. Secondary users are **Solutions Architects** who define the project structure before a DE takes over. - -### What is the pain today? - -When a DE starts a new CDF project, there is no authoritative, reusable starting point that covers the full stack. The options available today each have gaps: - -- **`dp:quickstart`** is demo-oriented — it ships synthetic data and pre-configured connections that are tightly coupled to a fictional "Springfield" site. Removing synthetic data, renaming locations, or swapping a source system requires touching files across multiple modules. It is not designed to evolve into a production deployment. -- **Blank-slate projects** (no DP) require DEs to assemble spaces, datasets, groups, extractor configs, transformations, and orchestration from scratch on every engagement. This leads to inconsistent project structures, configuration drift, and undocumented decisions. -- **gss-knowledge-base** contains mature extractor configuration templates (PI, OPC-UA, SAP, DB, Files) but they are not wired into any deployable DP — DEs must manually locate, copy, and adapt them per project. -- **Lack of standardisation**: a simple research showed that out of eight delivered quickstarts there was no consistency in naming conventions, access control, or data model alignment. - -### What does this enable? - -`dp:foundation` gives DEs and partners a single, composable starting point they can deploy to a real customer project on day one: - -- A near **zero-configuration deployment**: the DP deploys and runs without significant initial configuration beyond filling in credentials and a `location` variable. -- Extractor configuration templates for the most common industrial source systems are bundled — no gss-knowledge-base lookup required. -- Transformations are provided as **generalized examples and AI/Cursor scaffolds**, guided by cursor rules (`.cursor/rules/cdf-transformations.mdc`) so DEs can use them as input to AI tools to generate site-specific SQL rapidly. -- The project structure is standardised and parameterised by `location` — a new site is a new variable value, not a new set of files. -- Contextualization is a first-class, deployable capability, not an afterthought. -- The architecture is open for extension (add a module, set a variable) rather than modification (fork and edit). - ---- - -## Goals - -- Provide a **near zero-configuration** CDF project foundation: deploy and run with minimal initial setup beyond credentials and a `location` identifier. -- Ship production-grade extractor configuration templates for **PI**, **OPC-UA**, **SAP**, **DB**, and **file sources** from gss-knowledge-base, so field engineers get a real starting point with all required parameters documented. -- Ship transformation SQL as **generalized examples and AI/Cursor scaffolds**, guided by cursor rules (`.cursor/rules/cdf-transformations.mdc`), that DEs can adapt rapidly for site-specific data. -- Support a choice between **ISA Manufacturing Extension** and **CFIHOS Oil & Gas** data models — selectable via a single config variable. -- Each source system module is self-contained and independently deployable — no module fails to deploy because another is absent. -- Ingestion orchestration is source-agnostic: configuring which transformations run in which phase is the only customization required when adding or removing a source system. -- Include a **CLI-based configuration wizard (P1)** to guide users through auth, source system selection, and initial variable setup. - ---- - -## Non-Goals (v1 Scope Exclusions) - -| Excluded | Rationale | -|---|---| -| **Maximo, Meridium, other CMMS** | SAP is the most common asset/maintenance source in the target segment. Additional CMMS sources are P2+ work. | -| **OSIsoft PI Asset Framework (AF)** | `cdf_pi_foundation` covers the PI Data Archive (timeseries). PI AF hierarchy ingestion requires a separate extractor; not in v1. | -| **SAP PM via IDoc / RFC** | The SAP OData extractor pattern is the primary integration. IDoc/RFC-based extractions require different tooling. | -| **OPC-UA Historical Access (HDA)** | The OPC-UA module covers live/subscribed data. HDA backfill is a documented extension pattern for P2+. | -| **OOTB CDF project setup** | `dp:foundation` does not configure IDP, project creation, or network connectivity. It assumes a provisioned CDF project. | -| **Atlas AI / OOTB Agents** | AI agent deployment (`dp:atlas_ai`) is a P2 concern layered on top of a working foundation. | -| **Automated transformation unit tests** | A testing framework for verifying SQL output is a P2 concern. | -| **Multi-tenant or multi-project federation** | Each `dp:foundation` deployment targets a single CDF project. | -| **Japanese / multi-language localization** | Future consideration. Not in v1 scope. | -| **CI/CD pipeline templates for ADO** | A separate initiative around SOPs and branching strategy templates. | -| **Module dependency auto-resolution** | Automatically resolving dependent modules is a desirable toolkit-level enhancement (P1). | - ---- - -## Target Users - -| Persona | How this DP helps | -|---|---| -| **Field Engineers / DEs** setting up a new customer project | Drop-in extractor config templates with all parameters documented; near zero-config start; transformations as AI scaffolds rather than manual SQL | -| **Solutions Architects** designing a scalable CDF project | Modular structure grows by adding modules, not by forking; shared variable contract means location-specific config lives in one place | -| **Partners** deploying CDF for the first time | Clear, layered architecture from data model → source systems → orchestration → contextualization; cherry-pick only what applies | - ---- - -## Step 0 — Prerequisites: Auth Setup - -`dp:foundation` does not prescribe or deploy IDP groups, app registrations, or project-level auth configuration. These are set up outside the DP according to the standard Cognite access management process. Refer to the [Cognite Access Management documentation](https://docs.cognite.com/cdf/access/) and your organisation's IDP configuration guide before deploying any module. - -Each source system module that requires a CDF group (e.g. the workflow execution group in `cdf_ingestion_foundation`) ships its own Group YAML. The DE populates the `sourceId` field in that YAML with the corresponding IDP group object ID after the IDP group has been created. - ---- - -## Module Architecture - -### Package Composition - -```toml -[packages.foundation] -id = "dp:foundation" -title = "Foundation Deployment Pack" -description = "A scalable, modular foundation for industrial CDF projects. Near zero-config start with ISA Manufacturing Extension or CFIHOS Oil & Gas DM, production-grade extractor config templates for PI, OPC-UA, SAP, DB, and file sources, modular ingestion orchestration, and contextualization." -canCherryPick = true -modules = [ - # Data models — choose one or both - "models/isa_manufacturing_extension", - "models/cfihos_oil_and_gas_extension", - # Source systems — deploy the ones matching your site - "sourcesystem/cdf_pi_foundation", - "sourcesystem/cdf_opcua_foundation", - "sourcesystem/cdf_sap_foundation", - "sourcesystem/cdf_db_foundation", - "sourcesystem/cdf_files_foundation", - # Ingestion orchestration - "foundation/cdf_ingestion_foundation", - # Contextualization - "accelerators/contextualization/cdf_file_annotation", - "accelerators/contextualization/cdf_entity_matching", - # Quality tooling - "tools/apps/qualitizer", -] -``` - -New modules created as part of this DP: - -- `sourcesystem/cdf_pi_foundation` -- `sourcesystem/cdf_opcua_foundation` -- `sourcesystem/cdf_sap_foundation` -- `sourcesystem/cdf_db_foundation` -- `sourcesystem/cdf_files_foundation` -- `foundation/cdf_ingestion_foundation` - -Existing modules referenced without modification: - -- `models/isa_manufacturing_extension` -- `models/cfihos_oil_and_gas_extension` -- `accelerators/contextualization/cdf_file_annotation` -- `accelerators/contextualization/cdf_entity_matching` -- `tools/apps/qualitizer` - ---- - -### Module Dependency Flow - -``` -┌──────────────────────────────────────────────────────────────────────────────┐ -│ LAYER 0 — DATA MODEL │ -│ │ -│ ┌─────────────────────────────────┐ ┌──────────────────────────────────┐ │ -│ │ models/isa_manufacturing_ │ │ models/cfihos_oil_and_gas_ │ │ -│ │ extension [existing] │ │ extension [existing] │ │ -│ │ Equipment · Asset · TS · │ │ CFIHOS-aligned equipment, │ │ -│ │ WorkOrder · Operation │ │ document, and tag hierarchy │ │ -│ └─────────────────────────────────┘ └──────────────────────────────────┘ │ -│ (choose one or both; set dataModelVariant in config) │ -└──────────────────────────────────────────────────────────────────────────────┘ - │ - ▼ -┌──────────────────────────────────────────────────────────────────────────────┐ -│ LAYER 1 — SOURCE SYSTEMS (independently deployable; each self-contained) │ -│ │ -│ cdf_pi_foundation cdf_opcua_foundation cdf_sap_foundation │ -│ [new] [new] [new] │ -│ EP config tmpl EP config tmpl EP config tmpl │ -│ Direct → DM TS Direct → DM TS RAW → 6 transformations │ -│ │ -│ cdf_db_foundation cdf_files_foundation │ -│ [new] [new] │ -│ EP config tmpl EP config tmpl │ -│ DB → RAW/DM Files → RAW/DM │ -└──────────────────────────────────────────────────────────────────────────────┘ - │ - ▼ -┌──────────────────────────────────────────────────────────────────────────────┐ -│ LAYER 2 — INGESTION ORCHESTRATION │ -│ │ -│ ┌───────────────────────────────────────────────────────────────────────┐ │ -│ │ foundation/cdf_ingestion_foundation [new] │ │ -│ │ Two-phase workflow: Population → Contextualization │ │ -│ │ Phase tasks configured via variable flags — no hardcoded sources │ │ -│ │ Parallel execution within each phase · Abort on failure │ │ -│ └───────────────────────────────────────────────────────────────────────┘ │ -└──────────────────────────────────────────────────────────────────────────────┘ - │ - ┌─────────────────────┼─────────────────────┐ - ▼ ▼ ▼ -┌──────────────────────────────────────────────────────────────────────────────┐ -│ LAYER 3 — CONTEXTUALIZATION (existing modules, no changes) │ -│ │ -│ ┌──────────────────────────────┐ ┌────────────────────────────────────┐ │ -│ │ cdf_file_annotation │ │ cdf_entity_matching │ │ -│ │ [existing] │ │ [existing] │ │ -│ │ P&ID annotation │ │ TS→Asset AI matching │ │ -│ │ 4 functions · 1 workflow │ │ 2 functions · 1 workflow │ │ -│ └──────────────────────────────┘ └────────────────────────────────────┘ │ -└──────────────────────────────────────────────────────────────────────────────┘ - │ - ▼ -┌──────────────────────────────────────────────────────────────────────────────┐ -│ LAYER 4 — QUALITY TOOLING (existing module, no changes) │ -│ │ -│ tools/apps/qualitizer │ -│ Interactive data quality inspection and remediation tool for DEs/partners │ -│ [existing] │ -└──────────────────────────────────────────────────────────────────────────────┘ -``` - ---- - -## Module Specifications - -### 1. `models/isa_manufacturing_extension` *(Existing — no changes)* - -**Purpose**: Extends the CDF core data model with manufacturing-specific views covering Asset, Equipment, TimeSeries, and Maintenance entities. v1 default data model. - -**Key implementation note**: Read `module.toml` and resource YAMLs to confirm exact `schemaSpace`, view external IDs, and property names before authoring transformation SQL. - -**Dependencies**: None - ---- - -### 2. `models/cfihos_oil_and_gas_extension` *(Existing — no changes)* - -**Purpose**: CFIHOS-aligned data model for oil & gas projects. Alternative to ISA Manufacturing Extension; selected via `dataModelVariant: cfihos_oil_and_gas` in each module's `default.config.yaml`. - -**Dependencies**: None - ---- - -### 3. `sourcesystem/cdf_pi_foundation` *(New)* - -**Purpose**: Ingest PI timeseries directly from a PI server into CDF via the PI .NET Extractor. The extractor writes timeseries data and metadata **directly to CDF** (no RAW landing step required). Ships with a complete, parameterized extractor configuration template sourced from gss-knowledge-base. - -**PI writes directly to CDF**: The PI .NET Extractor creates CDF TimeSeries resources and writes values directly. A lightweight DM-enrichment transformation maps CDF TimeSeries into the DM view (`ISATimeSeries` or equivalent). No RAW database or landing zone is needed. - -**Resources**: - -| Resource | External ID | Purpose | -|---|---|---| -| `ExtractionPipeline` | `ep_timeseries_{{location}}_pi` | Pipeline health tracking and config delivery | -| `ExtractionPipeline Config` (remote) | *(attached to pipeline)* | PI .NET extractor remote config template | -| `Transformation` | `tr_pi_timeseries_{{location}}_to_isa` | CDF TimeSeries metadata → DM `ISATimeSeries` instances | - -**Extractor config — remote vs local split**: - -The PI extractor config is split into two files: -- **Remote config** (`ep_pi.ExtractionPipeline.Config.yaml`): Pushed to CDF via ExtractionPipeline Config. Contains source-system-specific settings: PI server connection, extraction pipeline ID, data model destination, id-prefix, and tag filter. Managed by the DP. -- **Local config** (`config_local.yaml` — stays on extractor host, not committed to repo): Contains logger settings and Cognite connection (project, base URL, token URL, client ID/secret). These values are environment-specific and should not be pushed to CDF. - -> Cross-reference: [PI .NET Extractor documentation](https://docs.cognite.com/cdf/integration/guides/extraction/pi/) · gss-knowledge-base: `extractors/toolkit_examples/pi_net_extractor/` - -Key remote config parameters: - -```yaml -# Remote (pushed to CDF ExtractionPipeline Config): -# extraction-pipeline.external-id: ep_timeseries_{{location}}_pi -# data-modeling.space: {{instanceSpace}} -# destination.dataset-external-id: {{dataset}} -# id-prefix: pi: -# -# Local (stays on extractor host — local config file): -# logger.console.level: info -# cognite.project: ${COGNITE_PROJECT} -# cognite.base-url: ${COGNITE_BASE_URL} -# cognite.idp-authentication.client-id: ${COGNITE_CLIENT_ID} -# cognite.idp-authentication.client-secret: ${COGNITE_CLIENT_SECRET} -# -# Source credentials (environment variables, not in config): -# PI_HOST, PI_USER, PI_PASSWORD -``` - -**Transformation notes**: - -- SQL scaffold maps PI timeseries metadata into the selected DM view -- Maps PI tag name → `externalId` with `pi:` prefix -- `sysTagsFound` populated by default (opt-out via `populateSysTagsFound: false`) -- Use with `.cursor/rules/cdf-transformations.mdc` to adapt to site-specific tag naming - -**File structure**: - -``` -sourcesystem/cdf_pi_foundation/ -├── module.toml -├── default.config.yaml -├── extraction_pipelines/ -│ ├── ep_pi.ExtractionPipeline.yaml -│ └── ep_pi.ExtractionPipeline.Config.yaml # remote config only -└── transformations/ - ├── tr_pi_timeseries.Transformation.yaml - └── tr_pi_timeseries.Transformation.sql -``` - -**Configuration variables**: - -| Variable | Default | Description | -|---|---|---| -| `location` | *(inherited)* | Site identifier | -| `piIdPrefix` | `pi:` | External ID prefix for PI timeseries | -| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | - -**Environment variables required** (on extractor host): -- `PI_HOST`, `PI_USER`, `PI_PASSWORD` -- `COGNITE_PROJECT`, `COGNITE_BASE_URL`, `COGNITE_TOKEN_URL`, `COGNITE_CLIENT_ID`, `COGNITE_CLIENT_SECRET` - -**Dependencies**: None (self-contained) - ---- - -### 4. `sourcesystem/cdf_opcua_foundation` *(New)* - -**Purpose**: Ingest OPC-UA node data via the OPC-UA Extractor directly into CDF. Like PI, the OPC-UA extractor writes timeseries **directly to CDF** — no RAW landing step. A DM-enrichment transformation maps CDF TimeSeries into the selected DM view. Ships with a parameterized extractor configuration template sourced from gss-knowledge-base. - -> **Production warning**: OPC-UA node structures are highly site-specific. Node filter lists (allow/deny by node ID pattern) **must** be configured before production use. The extractor template ships with commented-out example filters. Without filters, the extractor browses the full server tree, which may be very large. - -**Resources**: - -| Resource | External ID | Purpose | -|---|---|---| -| `ExtractionPipeline` | `ep_timeseries_{{location}}_opcua` | Pipeline health tracking and config delivery | -| `ExtractionPipeline Config` (remote) | *(attached to pipeline)* | OPC-UA extractor remote config template | -| `Transformation` | `tr_opcua_timeseries_{{location}}_to_isa` | CDF TimeSeries metadata → DM `ISATimeSeries` instances | - -**Extractor config — remote vs local split**: - -- **Remote config** (`ep_opcua.ExtractionPipeline.Config.yaml`): OPC-UA endpoint, node filters, publishing/sampling intervals, extraction pipeline ID. -- **Local config** (stays on extractor host): Logger settings, Cognite connection settings, auth credentials. - -> Cross-reference: [OPC-UA Extractor documentation](https://docs.cognite.com/cdf/integration/guides/extraction/opc_ua/) · gss-knowledge-base: `extractors/toolkit_examples/opcua_extractor_speira_quickstart/` - -Key remote config parameters: - -```yaml -# Remote: -# endpoint.url: ${OPCUA_ENDPOINT_URL} -# extraction-pipeline.external-id: ep_timeseries_{{location}}_opcua -# id-prefix: opcua: -# source.node-filter: # site-specific allow/deny lists — MUST configure -# source.publishing-interval: {{opcuaPublishingInterval}} -# source.sampling-interval: {{opcuaSamplingInterval}} -# -# Local (stays on extractor host): -# logger.console.level: info -# cognite.project, base-url, idp-authentication — from env vars -# OPCUA_USER, OPCUA_PASSWORD if server requires auth -``` - -**File structure**: - -``` -sourcesystem/cdf_opcua_foundation/ -├── module.toml -├── default.config.yaml -├── extraction_pipelines/ -│ ├── ep_opcua.ExtractionPipeline.yaml -│ └── ep_opcua.ExtractionPipeline.Config.yaml # remote config only -└── transformations/ - ├── tr_opcua_timeseries.Transformation.yaml - └── tr_opcua_timeseries.Transformation.sql -``` - -**Configuration variables**: - -| Variable | Default | Description | -|---|---|---| -| `location` | *(inherited)* | Site identifier | -| `opcuaIdPrefix` | `opcua:` | External ID prefix for OPC-UA timeseries | -| `opcuaPublishingInterval` | `5000` | OPC-UA publishing interval in ms | -| `opcuaSamplingInterval` | `5000` | OPC-UA sampling interval in ms | -| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | - -**Environment variables required** (on extractor host): -- `OPCUA_ENDPOINT_URL` (and optionally `OPCUA_USER`, `OPCUA_PASSWORD`) -- Standard Cognite auth vars - -**Dependencies**: None (self-contained) - ---- - -### 5. `sourcesystem/cdf_sap_foundation` *(New)* - -**Purpose**: Ingest SAP functional locations, equipment, maintenance orders, and operations into CDF via a **single SAP OData extraction pipeline** writing to RAW, then transform into DM instances. Single-plant by default; multi-plant via `sapPlants` list variable. - -> SAP OData service names and entity keys vary across SAP versions and NW Gateway configurations. Verify all service names and field names before deploying. - -**Resources**: - -| Resource | External ID | Purpose | -|---|---|---| -| `ExtractionPipeline` | `ep_assets_{{location}}_sap` | Pipeline health tracking and config delivery | -| `ExtractionPipeline Config` (remote) | *(attached to pipeline)* | SAP OData extractor remote config template | -| `RAW Database` | `assets_{{location}}_sap` | SAP data landing zone | -| `Transformation` | `tr_sap_floc_{{location}}_to_isa_asset` | Functional locations → `ISAAsset` DM instances | -| `Transformation` | `tr_sap_equip_{{location}}_to_equipment` | Equipment master → `Equipment` DM instances | -| `Transformation` | `tr_sap_equip_{{location}}_to_asset_rel` | Equipment → Asset edge relationships | -| `Transformation` | `tr_sap_order_{{location}}_to_workorder` | Work orders → `WorkOrder` DM instances | -| `Transformation` | `tr_sap_oper_{{location}}_to_operation` | Work tasks → `Operation` DM instances | -| `Transformation` | `tr_sap_oper_{{location}}_to_order_rel` | Operation → WorkOrder edge relationships | - -**Extractor config — remote vs local split**: - -- **Remote config** (`ep_sap.ExtractionPipeline.Config.yaml`): SAP Gateway URL, client number, endpoint list (FunclocListSet, EquipmentListSet, ExHeaderSet, ExOlistSet, ExOperationsSet, ExNotifheader), RAW database and table targets, state-store config. -- **Local config** (stays on extractor host): Logger, Cognite connection, SAP credentials (`SAP_USERNAME`, `SAP_PASSWORD`). - -> Cross-reference: [SAP OData Extractor documentation](https://docs.cognite.com/cdf/integration/guides/extraction/sap/) · gss-knowledge-base: `extractors/toolkit_examples/sap_odata_extractor_remote/` - -**Transformation notes**: - -- SQL is provided as **generalized scaffolds** targeting the selected DM. Use with `.cursor/rules/cdf-transformations.mdc` to adapt to site-specific SAP entity naming. -- Key columns to verify before production: `Functlocation`, `Descript`, `Supfloc`, `Fltyp`, `Equipment`, `OrderId`, `Activity` -- `sysTagsFound` populated on `WorkOrder` for downstream contextualization compatibility (opt-out via `populateSysTagsFound: false`) - -**File structure**: - -``` -sourcesystem/cdf_sap_foundation/ -├── module.toml -├── default.config.yaml -├── extraction_pipelines/ -│ ├── ep_sap.ExtractionPipeline.yaml -│ └── ep_sap.ExtractionPipeline.Config.yaml # remote config only -├── raw/ -│ └── db_sap.Database.yaml -└── transformations/ - ├── tr_sap_assets.Transformation.yaml + .sql - ├── tr_sap_equipment.Transformation.yaml + .sql - ├── tr_sap_equipment_to_asset.Transformation.yaml + .sql - ├── tr_sap_maintenance_orders.Transformation.yaml + .sql - ├── tr_sap_operations.Transformation.yaml + .sql - └── tr_sap_operation_to_order.Transformation.yaml + .sql -``` - -**Configuration variables**: - -| Variable | Default | Description | -|---|---|---| -| `location` | *(inherited)* | Site identifier | -| `sapSystem` | `s4hana` | SAP system label, used in external IDs | -| `sapPlant` | `1000` | Default single-plant code | -| `sapPlants` | `[]` | Override for multi-plant, e.g. `["1000","2000"]` | -| `populateSysTagsFound` | `true` | Set to `false` to omit `sysTagsFound` population | - -**Environment variables required** (on extractor host): -- `SAP_GATEWAY_URL`, `SAP_CLIENT`, `SAP_USERNAME`, `SAP_PASSWORD` -- Standard Cognite auth vars - -**Dependencies**: None (self-contained) - ---- - -### 6. `sourcesystem/cdf_db_foundation` *(New)* - -**Purpose**: Ingest data from relational databases (MSSQL, PostgreSQL, Oracle, etc.) via the DB Extractor into CDF RAW, then transform into DM instances. The DB Extractor is configured with SQL queries that pull from source database tables on a schedule. Template sourced from gss-knowledge-base. - -**Resources**: - -| Resource | External ID | Purpose | -|---|---|---| -| `ExtractionPipeline` | `ep_db_{{location}}_{{dbSystem}}` | Pipeline health tracking and config delivery | -| `ExtractionPipeline Config` (remote) | *(attached to pipeline)* | DB extractor remote config template | -| `RAW Database` | `db_{{location}}_{{dbSystem}}` | DB source data landing zone | - -**Extractor config — remote vs local split**: - -- **Remote config**: Query list, RAW database/table targets, extraction pipeline ID, schedule. -- **Local config** (stays on extractor host): Logger, Cognite connection, database connection string (`DB_CONNECTION_STRING`). - -> Cross-reference: [DB Extractor documentation](https://docs.cognite.com/cdf/integration/guides/extraction/db_extractor/) · gss-knowledge-base: `extractors/toolkit_examples/db_extractor/` - -**Configuration variables**: - -| Variable | Default | Description | -|---|---|---| -| `location` | *(inherited)* | Site identifier | -| `dbSystem` | `db` | Source database system label (e.g. `mssql`, `postgres`) | - -**Dependencies**: None (self-contained) - ---- - -### 7. `sourcesystem/cdf_files_foundation` *(New)* - -**Purpose**: Ingest files and documents (from SharePoint, network shares, or other file stores) into CDF Files via the File Extractor. Enables downstream P&ID annotation via `cdf_file_annotation`. Template sourced from gss-knowledge-base. - -**Resources**: - -| Resource | External ID | Purpose | -|---|---|---| -| `ExtractionPipeline` | `ep_files_{{location}}_{{fileSource}}` | Pipeline health tracking and config delivery | -| `ExtractionPipeline Config` (remote) | *(attached to pipeline)* | File extractor remote config template | - -**Extractor config — remote vs local split**: - -- **Remote config**: File source paths/SharePoint site URL, file type filters, extraction pipeline ID. -- **Local config** (stays on extractor host): Logger, Cognite connection, source credentials (`SHAREPOINT_CLIENT_ID`, `SHAREPOINT_CLIENT_SECRET`, or file share credentials). - -> Cross-reference: [File Extractor documentation](https://docs.cognite.com/cdf/integration/guides/extraction/file/) · gss-knowledge-base: `extractors/toolkit_examples/file_extractor/` - -**Configuration variables**: - -| Variable | Default | Description | -|---|---|---| -| `location` | *(inherited)* | Site identifier | -| `fileSource` | `sharepoint` | Source label (e.g. `sharepoint`, `fileshare`) | - -**Dependencies**: None (self-contained) - ---- - -### 8. `foundation/cdf_ingestion_foundation` *(New)* - -**Purpose**: A source-agnostic, two-phase ingestion workflow that orchestrates population and contextualization transformations. `WorkflowVersion.yaml` is **generated at build time** from per-task snippet templates by `scripts/build_workflow.py`. A DE edits only `default.config.yaml` to declare which sources are enabled and which DM variant is in use — then runs the script to produce the final workflow YAML before deploying. - -**Design**: - -1. **Population phase** — loads data into DM instances (source system transformations). Tasks within the phase run in parallel where no `dependsOn` is declared. -2. **Contextualization phase** — builds relationships between DM instances. Runs only after population phase succeeds. Tasks run in parallel within the phase. - -Contextualization task snippets included depend on `dataModelVariant`: -- `isa_manufacturing_extension` → ISA relationship transformations (v1 default) -- `cfihos_oil_and_gas` → CFIHOS relationship task snippets (v1) - -**Build-time generation flow**: - -``` -default.config.yaml workflow_template/tasks/ -(enabledSources, DM variant) + (one YAML snippet per task) - │ │ - └──────────┬───────────────────┘ - ▼ - scripts/build_workflow.py - │ - ▼ - workflows/wf_ingestion_v1.WorkflowVersion.yaml ← committed, deployed -``` - -**DE workflow**: - -```bash -# 1. Edit default.config.yaml — set enabledSources and dataModelVariant -# 2. Regenerate the workflow YAML -python scripts/build_workflow.py - -# 3. Build and deploy -cdf build -cdf deploy -``` - -**Resources**: - -| Resource | External ID | Purpose | -|---|---|---| -| `Workflow` | `wf_{{location}}_ingestion` | Orchestrates population → contextualization | -| `WorkflowVersion` | `wf_{{location}}_ingestion/v1` | Generated version with task graph for enabled sources | -| `WorkflowTrigger` | `wf_{{location}}_ingestion_trigger` | Scheduled execution (configurable cron) | -| `Group` | `gp_cdf_{{location}}_workflow` | Service account group for workflow execution | -| `Group` | `gp_cdf_{{location}}_workflow_user` | User group for manual workflow triggering/monitoring | - -**File structure**: - -``` -foundation/cdf_ingestion_foundation/ -├── module.toml -├── default.config.yaml -├── scripts/ -│ └── build_workflow.py -├── workflow_template/ -│ └── tasks/ -│ ├── task.pi_timeseries.yaml -│ ├── task.opcua_timeseries.yaml -│ ├── task.sap_assets.yaml -│ ├── task.sap_equipment.yaml -│ ├── task.sap_maintenance_orders.yaml -│ ├── task.sap_operations.yaml -│ ├── task.db_ingest.yaml -│ ├── task.files_ingest.yaml -│ ├── ctx.isa_manufacturing_extension.equipment_to_asset.yaml -│ ├── ctx.isa_manufacturing_extension.operation_to_order.yaml -│ ├── ctx.cfihos.tag_to_document.yaml # CFIHOS ctx tasks (v1) -│ └── ctx.cfihos.tag_to_equipment.yaml -├── auth/ -│ ├── grp_workflow.Group.yaml -│ └── grp_workflow_user.Group.yaml -└── workflows/ - ├── wf_ingestion.Workflow.yaml - ├── wf_ingestion_v1.WorkflowVersion.yaml # GENERATED — do not edit by hand - └── wf_ingestion_trigger.WorkflowTrigger.yaml -``` - -**Dependencies**: None (self-contained). Source system modules must be deployed before the workflow is triggered. - ---- - -### 9. `accelerators/contextualization/cdf_file_annotation` *(Existing — no changes)* - -**Purpose**: P&ID and engineering document annotation using the Diagram Detect API. - -**Resources** (existing): 4 CDF Functions, 1 Workflow, 6 RAW tables, 1 Extraction Pipeline, 1 Dataset. - -**Dependencies**: Requires `instanceSpace`, `functionSpace`, and `dataset` variables to be set in the deployment's variable file. - ---- - -### 10. `accelerators/contextualization/cdf_entity_matching` *(Existing — no changes)* - -**Purpose**: AI-powered and rule-based timeseries-to-asset matching. - -**Resources** (existing): 2 CDF Functions, 1 Workflow, 5 RAW tables. - -**Dependencies**: Requires `instanceSpace` and `dataset` variables to be set in the deployment's variable file. - ---- - -### 11. `tools/apps/qualitizer` *(Existing — no changes)* - -**Purpose**: Interactive data quality inspection and remediation tool. DEs and partners can inspect and act on quality issues across assets, timeseries, and files — record-level review with actionable controls. Complements contextualization coverage metrics with hands-on quality work. - -**Dependencies**: None structural; requires DM instances to be present. - ---- - -## Configuration Variables — Consolidated Reference - -Each module defines its own `default.config.yaml`. The following variables appear across multiple modules and **must be set consistently** in the deployment's environment variable file (or toolkit config). There is no shared foundation module that centralises them. - -| Variable | Defined in | Consumed by | -|---|---|---| -| `location` | Every module | External IDs, RAW database names, space names across all modules | -| `organization` | `cdf_sap_foundation` | SAP transformation SQL view references | -| `schemaSpace` | Each source module | All source system transformations (DM view lookup) | -| `instanceSpace` | Each source module | All source system transformations (DM instance write target) | -| `dataset` | Each source module | Extraction pipelines and transformations | -| `dataModelVersion` | Each source module | Transformation view references | -| `dataModelVariant` | `cdf_ingestion_foundation` | Workflow task selection (ISA or CFIHOS ctx snippets) | -| `populateSysTagsFound` | Per source module | Source system transformations; `false` to omit the field | -| `sapPlant` / `sapPlants` | `cdf_sap_foundation` | SAP extractor config and transformation UNION logic | - -> **Note on variable defaults**: Default values in `default.config.yaml` must be concrete strings — not variable references (e.g. `location: oslo`, not computed cross-references). The `{{location}}` substitution is applied in resource YAML files by the toolkit, not within `default.config.yaml` itself. Verify chained variable resolution behaviour against the minimum supported toolkit version before using cross-variable defaults. - ---- - -## Resource Summary - -| Module | Status | Datasets | RAW DBs | Transformations | Workflows | Pipelines | Groups | -|---|---|---|---|---|---|---|---| -| `models/isa_manufacturing_extension` | Existing | — | — | — | — | — | — | -| `models/cfihos_oil_and_gas_extension` | Existing | — | — | — | — | — | — | -| `sourcesystem/cdf_pi_foundation` | New | 1 | 0 | 1 | 0 | 1 | 0 | -| `sourcesystem/cdf_opcua_foundation` | New | 1 | 0 | 1 | 0 | 1 | 0 | -| `sourcesystem/cdf_sap_foundation` | New | 1 | 1 | 6 | 0 | 1 | 0 | -| `sourcesystem/cdf_db_foundation` | New | 1 | 1 | 0 | 0 | 1 | 0 | -| `sourcesystem/cdf_files_foundation` | New | 1 | 0 | 0 | 0 | 1 | 0 | -| `foundation/cdf_ingestion_foundation` | New | 0 | 0 | 0 | 1 | 0 | 2 | -| `cdf_file_annotation` | Existing | 1 | 6 | 0 | 1 | 1 | 0 | -| `cdf_entity_matching` | Existing | 0 | 0 | 0 | 1 | 1 | 0 | -| `tools/apps/qualitizer` | Existing | 0 | 0 | 0 | 0 | 0 | 0 | -| **Total (new modules only)** | | **5** | **2** | **8** | **1** | **5** | **2** | - ---- - -## Release Phases - -### P0 — v1: Foundational Deployment - -**Goal**: A DE can deploy a complete, real industrial CDF project from scratch using this DP — source system extraction, data model, orchestration, and contextualization — without consulting gss-knowledge-base or assembling boilerplate manually. - -| Deliverable | Modules | -|---|---| -| ISA Manufacturing Extension data model | `models/isa_manufacturing_extension` | -| CFIHOS Oil & Gas data model (alternative) | `models/cfihos_oil_and_gas_extension` | -| PI timeseries ingestion (direct write) | `sourcesystem/cdf_pi_foundation` | -| OPC-UA timeseries ingestion (direct write) | `sourcesystem/cdf_opcua_foundation` | -| SAP asset + maintenance ingestion (RAW → DM) | `sourcesystem/cdf_sap_foundation` | -| DB extractor ingestion | `sourcesystem/cdf_db_foundation` | -| File/document ingestion | `sourcesystem/cdf_files_foundation` | -| Modular ingestion orchestration | `foundation/cdf_ingestion_foundation` | -| P&ID file annotation | `accelerators/contextualization/cdf_file_annotation` | -| Entity matching | `accelerators/contextualization/cdf_entity_matching` | -| Data quality tooling | `tools/apps/qualitizer` | - - -### P1 — v2: Hardening, Security, and Usability - -**Goal**: The v1 DP is hardened for production: security posture is tightened, feedback from first-wave deployments is incorporated, transformation scaffolds are testable, and new users can be guided through setup without reading documentation. - -| Deliverable | Notes | -|---|---| -| **Security hardening** | Review and tighten group ACL scopes; add per-resource scope options; document least-privilege patterns for each persona; add secret rotation guidance | -| **Feedback-driven improvements** | Incorporate feedback from first v1 deployments: naming adjustments, config ergonomics, extractor config corrections, README gaps | -| **Transformation unit test framework** | Test harness that validates SQL transformation output against known-good fixtures; enables DEs to verify scaffolds before handover | -| **Improved usability** | Improve `default.config.yaml` inline documentation; add validation helpers; reduce time-to-first-deploy | -| **CLI configuration wizard** | Interactive `cdf init` style wizard that guides users through auth setup, source system selection, and initial variable population | -| **Module dependency auto-resolution** | When a package depends on another, automatically resolve and prompt the user to include it (toolkit-level enhancement) | -| **Multi-plant SAP validation** | Verified multi-plant expansion via `sapPlants` list variable | -| **CFIHOS ctx task validation** | End-to-end validation of CFIHOS relationship task snippets in the ingestion workflow | - - -### P2 — v3: AI, Extended Source Systems, and Operational Tooling - -**Goal**: The foundation DP becomes the entry point for AI-augmented industrial workflows, a broader set of source systems, and richer operational visibility. - -| Deliverable | Module | Notes | -|---|---|---| -| Atlas AI integration | `dp:atlas_ai` | OOTB agents layered on top of the foundation data model | -| Additional source systems | `sourcesystem/cdf__foundation` | Maximo, Meridium, or other CMMS | -| PI Asset Framework (AF) support | `sourcesystem/cdf_pi_af_foundation` | Hierarchy ingestion from PI AF | - ---- - -## Risks and Dependencies - -### Team and Repository Dependencies - -| Dependency | Risk | Mitigation | -|---|---|---| -| `library` repo | All new modules land here; merge conflicts if other teams are actively developing in `modules/` | Coordinate with module owners; use feature branches per module | -| `gss-knowledge-base` repo | Extractor config templates sourced from here; changes there may need to be reflected in the DP | Document the source commit/tag in module READMEs; re-sync on major extractor version bumps | -| **`isa_manufacturing_extension` / `cfihos_oil_and_gas_extension` schema evolution** | View or property changes will break source system transformations without a coordinated update | Pin `dataModelVersion` variable; reference all view IDs and spaces via variables — a version bump stays a config change | -| **CDF Toolkit version** | Module YAML syntax and variable substitution are Toolkit-version-dependent | Document minimum supported Toolkit version in `module.toml`; test in CI | -| **CDF Workflows API** | Behaviour changes to `concurrencyPolicy`, `onFailure`, or task types would require workflow YAML updates | Monitor CDF release notes; the two-phase task graph is simple and low-risk | - -### Known Technical Risks - -| Risk | Likelihood | Impact | Mitigation | -|---|---|---|---| -| **PI extractor config drift across PI versions** | Medium | Medium | Document which extractor version the template targets; field engineers verify compatibility before deploying | -| **SAP OData endpoint variability** | Medium | High | Template documents common entity sets; customers adjust service names and field names for their SAP landscape | -| **OPC-UA node filter requirements** | High | Low | Config template ships with commented-out example filters; documented as required before production use | -| **Transformation generalization limits** | High | Medium | SQL scaffolds are generalized examples. Cursor rules (`.cursor/rules/cdf-transformations.mdc`) guide AI-assisted adaptation, but DEs must validate against real source data before handover | -| **Workflow generation script correctness** | Low | Medium | `build_workflow.py` validates `dependsOn` integrity at generation time; CI `--check` flag prevents drift between config and committed YAML | -| **PI/OPC-UA direct-write DM enrichment timing** | Low | Medium | Transformation enriching DM instances from CDF TimeSeries must run after extractors have written timeseries. Workflow ordering ensures this via `dependsOn` | - ---- - -## Open Questions - -### Q1 — Optional source system tasks in the ingestion workflow *(resolved)* - -**Decision**: Build-time YAML generation via `scripts/build_workflow.py`. Script reads `enabledSources` flags and DM variant, assembles relevant task snippets, validates `dependsOn` references, and writes `wf_ingestion_v1.WorkflowVersion.yaml`. CI `--check` flag prevents drift. - -### Q2 — `cdf_sap_foundation`: merged vs split module *(resolved)* - -**Decision**: Single merged module. In practice, assets and maintenance orders are always needed together for meaningful contextualization; the SAP OData extractor uses a single NW Gateway connection. - -### Q3 — `cdf_file_annotation` variable compatibility *(verify before v1)* - -`cdf_file_annotation` was written against the `cdf_common` variable contract. Verify that the variable names it expects (`instanceSpace`, `functionSpace`, `dataset`) are populated correctly by the deployment's variable file when deploying alongside the foundation source system modules. No structural dependency on `cdf_common` should be assumed. - -### Q4 — Minimum supported CDF Toolkit version *(must document before v1)* - -The minimum Toolkit version that supports all resource types used in this DP must be identified and pinned in each module's `module.toml`. - -### Q5 — Transformation scaffold validation approach *(open)* - -- **Option A**: Manual validation checklist — DE runs transformation in preview mode against real RAW data -- **Option B**: Transformation unit test framework (P1) with known-good RAW fixtures -- **Option C**: Validation notebook that runs scaffolds against sample data and reports mismatches - -Decision needed before P1. - -### Q6 — CFIHOS ctx task snippets for the ingestion workflow *(open)* - -The CFIHOS Oil & Gas DM relationship transformations (tag-to-document, tag-to-equipment) need to be authored and validated as task snippets for `cdf_ingestion_foundation`. This is a v1 blocker if CFIHOS DM support is required at launch. - ---- - -## Success Metrics - -### Near zero-config (usability check) - -- A DE deploys a working environment (foundation + one source system + workflow) by filling in ≤ 10 variables and running `cdf deploy` — without consulting additional documentation or requesting help. - -### Deployment health (binary checks) - -- `dp:foundation` deploys cleanly to a brand-new CDF project with no prior resources and no errors. -- Each source system module (`cdf_pi_foundation`, `cdf_opcua_foundation`, `cdf_sap_foundation`, `cdf_db_foundation`, `cdf_files_foundation`) deploys independently when the others are absent. -- All resource external IDs contain zero hardcoded site names or space identifiers — every location-specific value is a template variable. -- Existing contextualization modules (`cdf_file_annotation`, `cdf_entity_matching`) deploy alongside the new foundation modules with no changes to their files. - -### Field engineer experience (outcome-based) - -- **Extractor readiness**: A field engineer with CDF credentials and source system credentials can configure and run the PI, OPC-UA, or SAP extractor using only the config template shipped in the module — without consulting gss-knowledge-base or requesting help. -- **Time to first data in CDF**: A DE starting from a blank, provisioned CDF project can have timeseries and asset data flowing into the data model within **one working day** of deploying `dp:foundation` with a single source system. -- **Time to end-to-end deployment**: A DE deploying all source systems plus contextualization can complete the deployment within **two working days**. - -### Scalability (structural checks) - -- Adding a new source system requires: (a) deploying one new module and (b) updating one variable in `cdf_ingestion_foundation/default.config.yaml` — no existing module files are modified. -- Deploying the same DP to a second site (different `location`) requires only a new variable file — all module YAML is reused as-is. diff --git a/modules/tools/notebooks/cdf_queries/auth/notebook.cdf_query_example.Group.yaml b/modules/tools/notebooks/cdf_queries/auth/notebook.cdf_query_example.Group.yaml deleted file mode 100644 index e2e37473..00000000 --- a/modules/tools/notebooks/cdf_queries/auth/notebook.cdf_query_example.Group.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# This role is used for the processing of asset data, creating an asset hierarchy -name: 'gp_notebook.cdf_query_example.Group' -sourceId: -metadata: - origin: 'cdf-project-templates' -capabilities: - - dataModelsAcl: - actions: - - WRITE - scope: - all: {} - - dataModelInstancesAcl: - actions: - - READ - scope: - all: {} - - timeSeriesAcl: - actions: - - READ - scope: - all: {} - - filesAcl: - actions: - - READ - scope: - all: {} diff --git a/modules/tools/notebooks/cdf_queries/module.toml b/modules/tools/notebooks/cdf_queries/module.toml deleted file mode 100644 index f48a9b47..00000000 --- a/modules/tools/notebooks/cdf_queries/module.toml +++ /dev/null @@ -1,5 +0,0 @@ -[module] -title = "CDF Query examples" -id = "query_example_notebook" -package_id = "tool" - diff --git a/modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb b/modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb deleted file mode 100644 index 4324f7bb..00000000 --- a/modules/tools/notebooks/cdf_queries/notebooks/queries.ipynb +++ /dev/null @@ -1,18171 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "19587b30", - "metadata": {}, - "source": [ - "# Queries\n", - "This notebook contains a set of DMS query examples that can be used as templates." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "85f0feb4", - "metadata": {}, - "outputs": [], - "source": "import json\nimport os\nimport time\nfrom collections import defaultdict\nfrom pathlib import Path\n\nfrom cognite.client import CogniteClient, global_config\nfrom cognite.client.config import ClientConfig\nfrom cognite.client.credentials import OAuthClientCredentials\nfrom cognite.client.data_classes.data_modeling import (\n EdgeListWithCursor,\n InstanceSort,\n NodeId,\n NodeListWithCursor,\n ViewId,\n)\nfrom cognite.client.data_classes.data_modeling.query import (\n NodeResultSetExpression,\n Query,\n QueryResult,\n Select,\n SourceSelector,\n)\nfrom cognite.client.data_classes.filters import (\n And,\n ContainsAll,\n Equals,\n HasData,\n Nested,\n Prefix,\n SpaceFilter,\n)\nfrom cognite.client.exceptions import CogniteAPIError\nfrom dotenv import load_dotenv\nfrom tenacity import (\n retry,\n retry_if_exception,\n stop_after_attempt,\n wait_exponential_jitter,\n)" - }, - { - "cell_type": "markdown", - "id": "8ea0065b", - "metadata": {}, - "source": [ - "## Basic setup" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "8655ee9b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loading credentials from C:\\Users\\JanIngeBergseth\\OneDrive - Cognite AS\\Documents\\GitHub\\library\\.env\n", - "Client configured with alpha features enabled and SDK retries tuned (max_retries=10).\n" - ] - } - ], - "source": [ - "# Locate the .env file by walking up from the current working directory until we find one.\n", - "# Notebooks set cwd to wherever Jupyter was launched, so a fixed `parents[N]` is fragile.\n", - "def _find_env_file(start: Path | None = None) -> Path | None:\n", - " start = (start or Path.cwd()).resolve()\n", - " for candidate in [start, *start.parents]:\n", - " env_path = candidate / \".env\"\n", - " if env_path.is_file():\n", - " return env_path\n", - " return None\n", - "\n", - "\n", - "env_file = _find_env_file()\n", - "if env_file is None:\n", - " raise FileNotFoundError(\n", - " \"Could not find a .env file by walking up from cwd. \"\n", - " \"Place a .env at the repo root or set the CDF_* / IDP_* env vars in your shell.\"\n", - " )\n", - "print(f\"Loading credentials from {env_file}\")\n", - "load_dotenv(env_file, override=False)\n", - "\n", - "project = os.getenv(\"CDF_PROJECT\")\n", - "cluster = os.getenv(\"CDF_CLUSTER\")\n", - "client_id = os.getenv(\"CDF_CLIENT_ID\") or os.getenv(\"IDP_CLIENT_ID\")\n", - "client_secret = os.getenv(\"CDF_CLIENT_SECRET\") or os.getenv(\"IDP_CLIENT_SECRET\")\n", - "tenant_id = os.getenv(\"CDF_TENANT_ID\") or os.getenv(\"IDP_TENANT_ID\")\n", - "base_url = os.getenv(\"CDF_BASE_URL\") or os.getenv(\"CDF_URL\") or (f\"https://{cluster}.cognitedata.com\" if cluster else None)\n", - "\n", - "missing = [\n", - " name for name, val in {\n", - " \"CDF_PROJECT\": project,\n", - " \"CDF_CLIENT_ID / IDP_CLIENT_ID\": client_id,\n", - " \"CDF_CLIENT_SECRET / IDP_CLIENT_SECRET\": client_secret,\n", - " \"CDF_TENANT_ID / IDP_TENANT_ID\": tenant_id,\n", - " \"CDF_BASE_URL / CDF_URL / CDF_CLUSTER\": base_url,\n", - " }.items()\n", - " if not val\n", - "]\n", - "if missing:\n", - " raise RuntimeError(\n", - " f\"Missing required environment variables: {', '.join(missing)}.\\n\"\n", - " f\"Checked .env: {env_file}\\n\"\n", - " \"Make sure these are defined there or exported in your shell.\"\n", - " )\n", - "\n", - "credentials = OAuthClientCredentials(\n", - " token_url=f\"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token\",\n", - " client_id=client_id,\n", - " client_secret=client_secret,\n", - " scopes=[f\"{base_url}/.default\"],\n", - ")\n", - "\n", - "# Increase SDK-level retry budget so transient 429/5xx are handled before they reach user code.\n", - "# The SDK already retries 429 and 5xx with backoff; we just give it more headroom.\n", - "global_config.max_retries = 10\n", - "global_config.max_retry_backoff = 30\n", - "global_config.disable_pypi_version_check = True\n", - "\n", - "client = CogniteClient(ClientConfig(\n", - " client_name=\"cdf-query-examples\",\n", - " project=project,\n", - " credentials=credentials,\n", - " base_url=base_url,\n", - "))\n", - "\n", - "# Merge (don't overwrite) headers so SDK defaults like x-cdp-sdk / User-Agent are preserved.\n", - "# cdf-version: alpha unlocks alpha features on /query (e.g. the \"debug\" envelope used below).\n", - "client.config.headers = {**(client.config.headers or {}), \"cdf-version\": \"alpha\"}\n", - "print(\"Client configured with alpha features enabled and SDK retries tuned (max_retries=10).\")" - ] - }, - { - "cell_type": "markdown", - "id": "0d88508a", - "metadata": {}, - "source": [ - "# Retry helpers (408 / 429 / 5xx)\n", - "\n", - "These wrappers handle the two failure modes you'll hit most often when running DMS queries:\n", - "\n", - "- **408 Request Timeout** — usually caused by oversized payloads (`properties=[\"*\"]`), high `limit`, or expensive joins. The right long-term fix is to narrow the query; the retry only buys time.\n", - "- **429 Too Many Requests** — token-bucket throttling. Exponential backoff with jitter clears it.\n", - "\n", - "The decorator below retries on `{408, 425, 429, 500, 502, 503, 504}` with jittered exponential backoff. The Cognite SDK also retries internally (configured above via `global_config`); these wrappers add a second layer for the user-facing call." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "1d29ce18", - "metadata": {}, - "outputs": [], - "source": [ - "RETRYABLE_CODES = {408, 425, 429, 500, 502, 503, 504}\n", - "\n", - "\n", - "def is_retryable_exception(e: BaseException) -> bool:\n", - " \"\"\"Retry on transient transport / throttling errors.\"\"\"\n", - " return isinstance(e, CogniteAPIError) and e.code in RETRYABLE_CODES\n", - "\n", - "\n", - "retry_cognite = retry(\n", - " reraise=True,\n", - " stop=stop_after_attempt(5),\n", - " retry=retry_if_exception(is_retryable_exception),\n", - " wait=wait_exponential_jitter(initial=1, max=30, jitter=2),\n", - ")\n", - "\n", - "\n", - "@retry_cognite\n", - "def run_query(client: CogniteClient, query: Query) -> QueryResult:\n", - " \"\"\"Run a /query against the data model with retry on 408/429/5xx.\"\"\"\n", - " return client.data_modeling.instances.query(query=query)\n", - "\n", - "\n", - "@retry_cognite\n", - "def run_sync(client: CogniteClient, query: Query) -> QueryResult:\n", - " \"\"\"Run a /sync (cursor-based) query with retry on 408/429/5xx.\"\"\"\n", - " return client.data_modeling.instances.sync(query=query)\n", - "\n", - "\n", - "def log_api_error(e: CogniteAPIError) -> None:\n", - " \"\"\"Print enough context to correlate with CDF backend logs.\"\"\"\n", - " print(f\"CogniteAPIError code={e.code} x_request_id={getattr(e, 'x_request_id', None)}: {e.message}\")" - ] - }, - { - "cell_type": "markdown", - "id": "0dd34662", - "metadata": {}, - "source": [ - "# Setup\n", - "\n", - "Define the instance space, the model space, the model version, and all `ViewId`s used by the queries below. Centralising these constants makes it trivial to retarget the notebook at a different deployment." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "949949e1", - "metadata": {}, - "outputs": [], - "source": [ - "# Target model in this project: dm_dom_oil_and_gas : dm_oil_and_gas_domain_model / v1\n", - "# Adjust INST_SP if your instance space differs from the model space.\n", - "INST_SP = \"inst_location\" # instance space\n", - "MODEL_SP_CDM = \"cdf_cdm\" # model space (where views/containers live)\n", - "MODEL_SP_IDM = \"cdf_idm\" # model space (where views/containers live)\n", - "MODEL_VERSION = \"v1\"\n", - "\n", - "# Project views (resolved from `client.data_modeling.views.list(space=MODEL_SP)`).\n", - "# `Tag` is this model's \"asset\" equivalent (functional tag). There is no Activity view -\n", - "# closest analogues are WorkOrder / WorkOrderOperation.\n", - "asset_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteAsset\", version=MODEL_VERSION)\n", - "ts_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteTimeSeries\", version=MODEL_VERSION)\n", - "file_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteFile\", version=MODEL_VERSION)\n", - "eq_vid = ViewId(space=MODEL_SP_CDM, external_id=\"CogniteEquipment\", version=MODEL_VERSION)\n", - "wo_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteMaintenanceOrder\", version=MODEL_VERSION)\n", - "wo_op_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteOperation\", version=MODEL_VERSION)\n", - "notification_vid = ViewId(space=MODEL_SP_IDM, external_id=\"CogniteNotification\", version=MODEL_VERSION)\n" - ] - }, - { - "cell_type": "markdown", - "id": "9f537673", - "metadata": {}, - "source": [ - "Optional sanity check: list all views in the model space." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "9e904032", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "asset_vid -> cdf_cdm:CogniteAsset/v1 (23 properties)\n", - "ts_vid -> cdf_cdm:CogniteTimeSeries/v1 (19 properties)\n", - "file_vid -> cdf_cdm:CogniteFile/v1 (18 properties)\n", - "eq_vid -> cdf_cdm:CogniteEquipment/v1 (18 properties)\n", - "wo_vid -> cdf_idm:CogniteMaintenanceOrder/v1 (24 properties)\n", - "wo_op_vid -> cdf_idm:CogniteOperation/v1 (27 properties)\n", - "notification_vid -> cdf_idm:CogniteNotification/v1 (21 properties)\n" - ] - } - ], - "source": [ - "# Inspect the ViewIds defined in the Setup cell. For each one, retrieve the full\n", - "# view definition from CDF and print its properties so you know what's available\n", - "# for filter / select / sort. Driven by the variables in Setup so renaming a view\n", - "# in one place is enough.\n", - "view_ids = {\n", - " \"asset_vid\": asset_vid,\n", - " \"ts_vid\": ts_vid,\n", - " \"file_vid\": file_vid,\n", - " \"eq_vid\": eq_vid,\n", - " \"wo_vid\": wo_vid,\n", - " \"wo_op_vid\": wo_op_vid,\n", - " \"notification_vid\": notification_vid,\n", - "}\n", - "\n", - "retrieved = client.data_modeling.views.retrieve(list(view_ids.values()))\n", - "retrieved_by_id = {(v.space, v.external_id, v.version): v for v in retrieved}\n", - "\n", - "# Cache property metadata per view for downstream query-design / debugging.\n", - "# Schema: view_properties[var_name] = {prop_name: {\"type\": ..., \"is_list\": bool,\n", - "# \"is_direct_relation\": bool, \"is_reverse_direct_relation\": bool,\n", - "# \"container\": (space, external_id) | None}}\n", - "view_properties: dict[str, dict[str, dict]] = {}\n", - "\n", - "for var_name, vid in view_ids.items():\n", - " view = retrieved_by_id.get((vid.space, vid.external_id, vid.version))\n", - " if view is None:\n", - " print(f\"{var_name} -> {vid.space}:{vid.external_id}/{vid.version} (NOT FOUND)\")\n", - " view_properties[var_name] = {}\n", - " continue\n", - "\n", - " props: dict[str, dict] = {}\n", - " for prop_name, prop in view.properties.items():\n", - " prop_type = getattr(prop, \"type\", None)\n", - " cls_name = prop.__class__.__name__\n", - " container = getattr(prop, \"container\", None)\n", - " props[prop_name] = {\n", - " \"type\": str(prop_type) if prop_type is not None else cls_name,\n", - " \"is_list\": getattr(prop, \"list\", False),\n", - " \"is_direct_relation\": cls_name == \"MappedPropertyApply\" and \"direct\" in str(prop_type).lower()\n", - " or \"direct\" in cls_name.lower(),\n", - " \"is_reverse_direct_relation\": \"ReverseDirectRelation\" in cls_name,\n", - " \"container\": (container.space, container.external_id) if container is not None else None,\n", - " }\n", - " view_properties[var_name] = props\n", - " print(f\"{var_name} -> {vid.space}:{vid.external_id}/{vid.version} ({len(props)} properties)\")\n", - "\n", - "# Quick-access helpers for query design:\n", - "# view_properties[\"asset_vid\"][\"parent\"] -> dict of metadata\n", - "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_direct_relation\"]]\n", - "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_reverse_direct_relation\"]]\n", - "# [p for p, m in view_properties[\"asset_vid\"].items() if m[\"is_list\"]]\n" - ] - }, - { - "cell_type": "markdown", - "id": "b4905a9d", - "metadata": {}, - "source": [ - "# Assets\n", - "## General asset queries" - ] - }, - { - "cell_type": "markdown", - "id": "95db1bc4", - "metadata": {}, - "source": [ - "### List assets and sort based on their externalId\n", - "\n", - "Listing assets works almost the same as in the case of legacy assets. The main difference is the **sources** argument, that allows to choose the properties that will be fetched, by selecting a view (or a list of views).\n", - "\n", - "You can sort/filter either by using a property specified within a View or node/edge registry.\n", - "Sorting by created/updated time is not allowed as of now, due to performance considerations (too much reindexing on every instance update)." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "3ddb499f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Returned 500 Tag instances.\n", - "Spaces seen in this batch: {'inst_location': 500}\n", - "\n", - "Sample Tag: space='inst_location' externalId='f4af554c-57aa-4043-ad2b-263aa9e34485'\n", - "{\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Seawater Lift Pump A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Centrifugal seawater lift pump train A\",\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"sourceId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - "}\n" - ] - } - ], - "source": [ - "# Listing instances through a view. The `sources` argument selects which view's\n", - "# properties get returned; sort/filter can reference any property on that view\n", - "# or the node/edge registry (e.g. (\"node\", \"externalId\")). Sorting on\n", - "# createdTime/lastUpdatedTime is not allowed.\n", - "#\n", - "# We omit `space=` so we discover where Tags actually live, then print the\n", - "# distribution of spaces so you can pin INST_SP correctly. The data\n", - "# (instance) space is usually different from the model space.\n", - "assets = client.data_modeling.instances.list(\n", - " sources=asset_vid,\n", - " limit=500,\n", - " # Equals filter against a single text property on the view.\n", - " filter=Equals(\n", - " property=asset_vid.as_property_ref(\"sourceContext\"),\n", - " value=\"cfihos_test\",\n", - " ),\n", - " sort=InstanceSort(property=[\"node\", \"externalId\"], direction=\"descending\"),\n", - ")\n", - "print(f\"Returned {len(assets)} Tag instances.\")\n", - "\n", - "from collections import Counter\n", - "\n", - "space_counts = Counter(a.space for a in assets)\n", - "print(\"Spaces seen in this batch:\", dict(space_counts))\n", - "if assets:\n", - " sample = assets[0]\n", - " print(f\"\\nSample Tag: space={sample.space!r} externalId={sample.external_id!r}\")\n", - " print(sample)\n", - "\n", - "# Once you know the right instance space, set INST_SP in the Setup cell and add\n", - "# `space=INST_SP` back here:\n", - "# filter=Equals([\"node\", \"space\"], value=INST_SP)\n", - "# ...or filter by a direct relation (note the {space, externalId} value shape):\n", - "# filter=Equals(\n", - "# property=asset_vid.as_property_ref(\"parent\"),\n", - "# value={\"space\": INST_SP, \"externalId\": \"SITE_OSL\"},\n", - "# )" - ] - }, - { - "cell_type": "markdown", - "id": "df281e86", - "metadata": {}, - "source": [ - "# Search endpoint\n", - "\n", - "Search is tokenized full-text lookup (not regex; see the docs for the exact tokenization rules).\n", - "\n", - "This endpoint targets the Elasticsearch backend where *every text property is indexed*, so it is typically more performant than `/query` for keyword-style lookups.\n", - "\n", - "Caveat: search can only match `text`-typed properties." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "69c9c180", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Searching Tag for 'Electrical Distributi' (derived from sample Tag 'Electrical Distribution')\n", - "Hits: 1\n", - "{\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-EL\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Electrical Distribution\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"Power generation and distribution\",\n", - " \"sourceId\": \"VAL-PH-23-EL\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - "}\n" - ] - } - ], - "source": [ - "# Pick a real name from the data first - hardcoded demo values from another\n", - "# project (like \"CNY-AC\") will silently return zero hits.\n", - "sample = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=5)\n", - "if not sample:\n", - " raise RuntimeError(\"No Tag instances exist - ingest data or query a different view.\")\n", - "\n", - "sample_name = None\n", - "for node in sample:\n", - " props = node.properties.get(asset_vid, {})\n", - " if props.get(\"name\"):\n", - " sample_name = props[\"name\"]\n", - " break\n", - "\n", - "# Search by a substring of a real name (drop the last 2 chars to make it a partial match).\n", - "search_term = (sample_name or \"\")[:-2] or sample_name\n", - "print(f\"Searching Tag for {search_term!r} (derived from sample Tag {sample_name!r})\")\n", - "\n", - "results = client.data_modeling.instances.search(\n", - " view=asset_vid,\n", - " space=INST_SP,\n", - " limit=20,\n", - " sort=InstanceSort(property=asset_vid.as_property_ref(\"name\"), direction=\"descending\"),\n", - " query=search_term,\n", - ")\n", - "print(f\"Hits: {len(results)}\")\n", - "for r in results[:5]:\n", - " print(r)" - ] - }, - { - "cell_type": "markdown", - "id": "af98bf8e", - "metadata": {}, - "source": [ - "## Iterative listing\n", - "\n", - "Using instances API you can fetch the instances in batches, to avoid timeouts and reduce memory load" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "ffee642e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "sourceContext distribution (top 5): [('cfihos_test', 198), (None, 2)]\n", - "Iterating Tags with sourceContext == 'cfihos_test'\n", - "Fetching batch 1\n", - "500\n", - "Fetching batch 2\n", - "500\n", - "Fetching batch 3\n", - "201\n" - ] - } - ], - "source": [ - "# Stream the full result set in batches. Set limit=None for unbounded iteration\n", - "# (this example caps at 20000 only to keep the demo fast - remove for production use).\n", - "# chunk_size controls page size; 500-1000 is typically a good compromise between\n", - "# round-trip overhead and the 408 risk that comes with huge per-page payloads.\n", - "\n", - "# Pick a real sourceContext value from the data instead of hardcoding one.\n", - "from collections import Counter\n", - "\n", - "probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", - "source_contexts = Counter(\n", - " (node.properties.get(asset_vid, {}) or {}).get(\"sourceContext\")\n", - " for node in probe\n", - ")\n", - "print(\"sourceContext distribution (top 5):\", source_contexts.most_common(5))\n", - "\n", - "source_context_value = next(\n", - " (val for val, _ in source_contexts.most_common() if val), None\n", - ")\n", - "if source_context_value is None:\n", - " print(\"No sourceContext values found - iterating without a filter instead.\")\n", - " extra_filter = None\n", - "else:\n", - " print(f\"Iterating Tags with sourceContext == {source_context_value!r}\")\n", - " extra_filter = Equals(\n", - " property=asset_vid.as_property_ref(\"sourceContext\"),\n", - " value=source_context_value,\n", - " )\n", - "\n", - "for i, assets in enumerate(client.data_modeling.instances(\n", - " chunk_size=500,\n", - " instance_type=\"node\",\n", - " sources=asset_vid,\n", - " space=INST_SP,\n", - " limit=20000,\n", - " sort=InstanceSort(property=[\"node\", \"externalId\"], direction=\"descending\"),\n", - " filter=extra_filter,\n", - ")):\n", - " print(f\"Fetching batch {i + 1}\")\n", - " print(len(assets))" - ] - }, - { - "cell_type": "markdown", - "id": "78a65d04", - "metadata": {}, - "source": [ - "### Fetching assets with the query endpoint\n", - "\n", - "Use `/query` when you need only a specific subset of properties of the retrieved instances. This query is equivalent to the `list()` example above." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "719682c0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "sourceContext distribution (top 5): [('cfihos_test', 198), (None, 2)]\n", - "Querying Tags with sourceContext == 'cfihos_test'\n", - "500\n", - "[\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"name\": \"Seawater Lift Pump A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Lube Oil Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"PA/GA System Process Area\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"df052853-f39c-405b-a275-33768b91c623\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"name\": \"Gas Turbine Generator A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"name\": \"Chemical Injection Pump\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Scaffolding Kit A\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"2nd Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"name\": \"UPS System Process Hall\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"PH 2nd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"2nd Stage Suction Line 12in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"c39906ea-0a81-4cb0-a002-9658b8846a38\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Subsea Control Module A\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Scrubber Level Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Platform Main Deck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"1st Stage Performance Control Valve\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Gas Turbine Generator B\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Top Drive System\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Safety Relief Valve\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-48\",\n", - " \"version\": 34,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Area 48 Subsea Systems\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-WT\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"name\": \"Water Treatment System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-UT\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"name\": \"Utilities System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-GC\",\n", - " \"version\": 34,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Gas Compression System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-EL\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"name\": \"Electrical Distribution\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23\",\n", - " \"version\": 34,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Area 23 Gas Compression\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH\",\n", - " \"version\": 33,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Valhall Process Hall\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"PH-S-2308\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"PH-S-2308\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TX-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"PH-S-2301\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"PH-S-2301\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"PH-S-2217\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"PH-S-2217\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"PH-S-1400\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"PH-S-1400\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TX-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"PH-S-1305\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"PH-S-1305\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Drilling Derrick Assembly\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Network Switch Cabinet A\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"90-MX-9245\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"90-MX-9245\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XX-9105\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"VFD 1st Stage Compressor\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Process Hall Overhead Crane 10T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"1st Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"PH 3rd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Helideck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"Instrument Equipment Room\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"2nd Stage Suction Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"6767827c-f362-4b04-b303-fb5669ecab2b\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " },\n", - " \"name\": \"Subsea Manifold\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Module Support Structure\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9011A+82B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"60-EN-9011A+82B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9011A+80E2\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"60-EN-9011A+80E2\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9010B+29A1\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-GK-9107B-M01\"\n", - " },\n", - " \"name\": \"60-EN-9010B+29A1\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9010B+27G2\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VA-9110-M01\"\n", - " },\n", - " \"name\": \"60-EN-9010B+27G2\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9010B+27G1\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"60-EN-9010B+27G1\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PC-9109-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9010A+28A2\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"60-EN-9010A+28A2\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-GK-9107A-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EN-9010A+24B1\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"60-EN-9010A+24B1\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9106\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"60-EH-9000A+H00\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"60-EH-9000A+H00\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Lifting Sling Assembly\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"1st Stage Discharge Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Portable Gas Detector\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-ZSL-96966B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XY-96966B\"\n", - " },\n", - " \"name\": \"48-ZSL-96966B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-ZSL-96966A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XY-96966A\"\n", - " },\n", - " \"name\": \"48-ZSL-96966A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-ZSH-96966B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-ZSH-96966B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XY-96966B\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-ZSH-96966A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-ZSH-96966A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XY-96966A\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XY-96966B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XY-96966B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XY-96966A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XY-96966A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XY-96961\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96961\"\n", - " },\n", - " \"name\": \"48-XY-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XY-96960\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96960\"\n", - " },\n", - " \"name\": \"48-XY-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XV-96962\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XV-96962\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9106\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XV-96961\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XV-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9105\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XV-96960-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XV-96960-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96960\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XV-96960-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XV-96960-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96960\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XV-96960\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XV-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-TB-9159\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XI-96964B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-XI-96964B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-XI-96964A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " },\n", - " \"name\": \"48-XI-96964A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-TSL-96960\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " },\n", - " \"name\": \"48-TSL-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-TB-9159\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-TB-9159\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-9113\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " },\n", - " \"name\": \"48-SU-9113\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-9106\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " },\n", - " \"name\": \"48-SU-9106\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-9105\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-SU-9105\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-8503\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:30.893+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Subsea Manifold\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-8502\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:30.893+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " },\n", - " \"name\": \"Subsea Christmas Tree Well-1\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-SU-8501\",\n", - " \"version\": 45,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Subsea Control Module A\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PT-96962\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96962\"\n", - " },\n", - " \"name\": \"48-PT-96962\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PT-96961\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96961\"\n", - " },\n", - " \"name\": \"48-PT-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PT-96960\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-PT-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96960\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PSV-96963\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-PSV-96963\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-TB-9159\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PSE-96962\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9106\"\n", - " },\n", - " \"name\": \"48-PSE-96962\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PSE-96961\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9105\"\n", - " },\n", - " \"name\": \"48-PSE-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PI-96962A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-PI-96962A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96962\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PI-96962\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-PI-96962\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96962\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PI-96961A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-XV-96961\"\n", - " },\n", - " \"name\": \"48-PI-96961A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PI-96961\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-PI-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96961\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PI-96960\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96960\"\n", - " },\n", - " \"name\": \"48-PI-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PCV-96964\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-TB-9159\"\n", - " },\n", - " \"name\": \"48-PCV-96964\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PAL-96962\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96962\"\n", - " },\n", - " \"name\": \"48-PAL-96962\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PAL-96961\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96961\"\n", - " },\n", - " \"name\": \"48-PAL-96961\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-PAHH-96960\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-PT-96960\"\n", - " },\n", - " \"name\": \"48-PAHH-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-LG-96960\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-LG-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-TB-9159\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-FXY-96960\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"48-FXY-96960\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"48-FE-9189\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"48-SU-9113\"\n", - " },\n", - " \"name\": \"48-FE-9189\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"1st Stage Gear Thrust Bearing Temp\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-V-90353\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:28.018+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-V-90353\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PDT-92506\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-V-90352\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92508\"\n", - " },\n", - " \"name\": \"45-V-90352\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92607B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-TT-92607B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92607A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-TT-92607A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-TT-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-TT-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92506\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-TT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-96196\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107B\"\n", - " },\n", - " \"name\": \"45-TI-96196\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-96195\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107A\"\n", - " },\n", - " \"name\": \"45-TI-96195\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92607B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-TT-92607B\"\n", - " },\n", - " \"name\": \"45-TI-92607B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92607A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-TI-92607A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-TT-92607A\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-TI-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-TT-92606\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92508\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-TI-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-TT-92508\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92506\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-TI-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-TT-92506\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92139B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"45-TI-92139B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TI-92139A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"45-TI-92139A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92609\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-PT-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92608\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PT-92608\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PT-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-96196\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PSV-96196\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107B\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-96195\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107A\"\n", - " },\n", - " \"name\": \"45-PSV-96195\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92613\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PSV-92613\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92612\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PSV-92612\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92515\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PSV-92515\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92514\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PSV-92514\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92510S\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PSV-92510S\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PI-92609\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92609\"\n", - " },\n", - " \"name\": \"45-PI-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PI-92608\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PI-92608\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92608\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PI-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PI-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92508\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDT-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PDT-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDT-92506\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PDT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDI-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PDT-92606\"\n", - " },\n", - " \"name\": \"45-PDI-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDI-92506\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PDI-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PDT-92506\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDAH-92606\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-PDAH-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PDT-92606\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDAH-92506\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PDT-92506\"\n", - " },\n", - " \"name\": \"45-PDAH-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PAHH-92609\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92609\"\n", - " },\n", - " \"name\": \"45-PAHH-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PAH-92608\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92608\"\n", - " },\n", - " \"name\": \"45-PAH-92608\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PAH-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PT-92508\"\n", - " },\n", - " \"name\": \"45-PAH-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92613-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92613\"\n", - " },\n", - " \"name\": \"45-HV-92613-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92613-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92613-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92613\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92613-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92613-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92613\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92612-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92612-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92612\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92612-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92612\"\n", - " },\n", - " \"name\": \"45-HV-92612-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92612-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92612\"\n", - " },\n", - " \"name\": \"45-HV-92612-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92609\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-HV-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92515-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92515\"\n", - " },\n", - " \"name\": \"45-HV-92515-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92515-01\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92515-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92515\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92514-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92514\"\n", - " },\n", - " \"name\": \"45-HV-92514-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92514-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-PSV-92514\"\n", - " },\n", - " \"name\": \"45-HV-92514-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92510-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92510-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92510-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92510-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92509\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-HV-92509\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FT-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FE-92606\"\n", - " },\n", - " \"name\": \"45-FT-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FT-92506\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-FT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FT-92139B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"45-FT-92139B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FT-92139A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"45-FT-92139A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FO-96130\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-FO-96130\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FO-92138\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"45-FO-92138\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FI-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92606\"\n", - " },\n", - " \"name\": \"45-FI-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FI-92506\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92506\"\n", - " },\n", - " \"name\": \"45-FI-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FI-92139B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92139B\"\n", - " },\n", - " \"name\": \"45-FI-92139B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FI-92139A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-FI-92139A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92139A\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FE-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-FE-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FE-92506\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-FE-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92506\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FAL-92139B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-FAL-92139B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92139B\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FAL-92139A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92139A\"\n", - " },\n", - " \"name\": \"45-FAL-92139A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FAH-92606\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"45-FAH-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92606\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FAH-92506\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"45-FT-92506\"\n", - " },\n", - " \"name\": \"45-FAH-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"423da2b8-3e47-4e1b-8139-c773f19508b2\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:54.079+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-48\"\n", - " },\n", - " \"name\": \"Subsea Christmas Tree Well-1\",\n", - " \"tags\": [\n", - " \"subsea-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"name\": \"PH 1st Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"name\": \"Electrical Equipment Room\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Deluge Fire Protection Station A\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"Emergency Shower Station\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"230900\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"name\": \"230900\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96121-03\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-96121-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96121-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96121-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-96121-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96121-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96121-01\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-96121-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96121-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96107-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96107-03\"\n", - " },\n", - " \"name\": \"23-ZT-96107-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96107-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96107-02\"\n", - " },\n", - " \"name\": \"23-ZT-96107-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-96107-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZE-96107-01\"\n", - " },\n", - " \"name\": \"23-ZT-96107-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-92543-MB\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-92543\"\n", - " },\n", - " \"name\": \"23-ZT-92543-MB\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-92543\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-92543\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FV-92543\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-92538-MB\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-92538-MB\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-92538\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZT-92538\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZT-92538\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PV-92538\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZS-96142C\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZS-96142C\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZS-96142B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZS-96142B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZS-96142A\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " },\n", - " \"name\": \"23-ZS-96142A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZI-96142B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZS-96142B\"\n", - " },\n", - " \"name\": \"23-ZI-96142B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZI-96142A\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZI-96142A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZS-96142A\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZI-92543\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-92543\"\n", - " },\n", - " \"name\": \"23-ZI-92543\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZI-92538\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZI-92538\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-92538\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96121-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZE-96121-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96121-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZE-96121-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96121-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZE-96121-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96107-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-ZE-96107-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96107-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-ZE-96107-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZE-96107-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-ZE-96107-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAL-92538\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-92538\"\n", - " },\n", - " \"name\": \"23-ZAL-92538\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96121-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-03\"\n", - " },\n", - " \"name\": \"23-ZAHH-96121-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96121-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-02\"\n", - " },\n", - " \"name\": \"23-ZAHH-96121-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96121-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-01\"\n", - " },\n", - " \"name\": \"23-ZAHH-96121-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96107-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZAHH-96107-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96107-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-02\"\n", - " },\n", - " \"name\": \"23-ZAHH-96107-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAHH-96107-01\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZAHH-96107-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96121-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-ZAH-96121-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96121-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-02\"\n", - " },\n", - " \"name\": \"23-ZAH-96121-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96121-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96121-01\"\n", - " },\n", - " \"name\": \"23-ZAH-96121-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96107-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-03\"\n", - " },\n", - " \"name\": \"23-ZAH-96107-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96107-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-02\"\n", - " },\n", - " \"name\": \"23-ZAH-96107-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ZAH-96107-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ZT-96107-01\"\n", - " },\n", - " \"name\": \"23-ZAH-96107-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSL-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " },\n", - " \"name\": \"23-YZSL-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSL-92526\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YZSL-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSL-92445\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YZSL-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSH-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YZSH-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSH-92526\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YZSH-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YZSH-92445\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " },\n", - " \"name\": \"23-YZSH-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YXY-92545-05\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " },\n", - " \"name\": \"23-YXY-92545-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YXY-92545-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " },\n", - " \"name\": \"23-YXY-92545-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YXY-92526-05\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YXY-92526-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YXY-92526-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YXY-92526-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YXY-92445-05\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YXY-92445-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YVX-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " },\n", - " \"name\": \"23-YVX-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YVX-92526\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YVX-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YVX-92445\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " },\n", - " \"name\": \"23-YVX-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96134-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96134-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96134-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96134-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96134-01\"\n", - " },\n", - " \"name\": \"23-YT-96134-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96133-02\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96133-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96133-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96133-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96133-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96133-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96123\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96123\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96122\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96122\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96120-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96120-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96120-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96120-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96120-01\"\n", - " },\n", - " \"name\": \"23-YT-96120-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96119-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96119-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96119-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96119-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96119-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96119-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96118-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96118-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96118-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96118-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96118-01\"\n", - " },\n", - " \"name\": \"23-YT-96118-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96117-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96117-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96117-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96117-01\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96117-01\"\n", - " },\n", - " \"name\": \"23-YT-96117-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96106-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96106-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96106-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96106-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96106-01\"\n", - " },\n", - " \"name\": \"23-YT-96106-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96105-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96105-02\"\n", - " },\n", - " \"name\": \"23-YT-96105-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YT-96105-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YT-96105-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96105-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSV-92545\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-YSV-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSV-92526\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YSV-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VG-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSV-92445\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-YSV-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSDP-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YSDP-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSDP-92526\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YSDP-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSDP-92445\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YSDP-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPV-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " },\n", - " \"name\": \"23-YPV-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPV-92526\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YPV-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPV-92445\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " },\n", - " \"name\": \"23-YPV-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPSV-92545\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YPSV-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92545\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPSV-92526\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92526\"\n", - " },\n", - " \"name\": \"23-YPSV-92526\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YPSV-92445\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YSV-92445\"\n", - " },\n", - " \"name\": \"23-YPSV-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96134-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96134-02\"\n", - " },\n", - " \"name\": \"23-YI-96134-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96134-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YI-96134-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96134-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96133-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96133-02\"\n", - " },\n", - " \"name\": \"23-YI-96133-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96133-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YI-96133-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96133-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96123\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96123\"\n", - " },\n", - " \"name\": \"23-YI-96123\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96122\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96122\"\n", - " },\n", - " \"name\": \"23-YI-96122\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96120-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YI-96120-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96120-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96120-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96120-01\"\n", - " },\n", - " \"name\": \"23-YI-96120-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96119-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96119-02\"\n", - " },\n", - " \"name\": \"23-YI-96119-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96119-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YI-96119-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96119-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96118-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96118-02\"\n", - " },\n", - " \"name\": \"23-YI-96118-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96118-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96118-01\"\n", - " },\n", - " \"name\": \"23-YI-96118-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96117-02\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96117-02\"\n", - " },\n", - " \"name\": \"23-YI-96117-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96117-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96117-01\"\n", - " },\n", - " \"name\": \"23-YI-96117-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96106-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96106-02\"\n", - " },\n", - " \"name\": \"23-YI-96106-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96106-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96106-01\"\n", - " },\n", - " \"name\": \"23-YI-96106-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96105-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96105-02\"\n", - " },\n", - " \"name\": \"23-YI-96105-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YI-96105-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YE-96105-01\"\n", - " },\n", - " \"name\": \"23-YI-96105-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96134-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-YE-96134-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96134-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-YE-96134-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96133-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YE-96133-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96133-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-YE-96133-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96120-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96120-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96120-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96120-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96119-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YE-96119-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96119-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96119-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96118-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96118-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96118-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96118-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96117-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-YE-96117-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96117-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YE-96117-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96106-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YE-96106-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96106-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-YE-96106-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96105-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YE-96105-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YE-96105-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-YE-96105-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96134-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96134-02\"\n", - " },\n", - " \"name\": \"23-YAHH-96134-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96134-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96134-01\"\n", - " },\n", - " \"name\": \"23-YAHH-96134-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96133-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96133-02\"\n", - " },\n", - " \"name\": \"23-YAHH-96133-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96133-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96133-01\"\n", - " },\n", - " \"name\": \"23-YAHH-96133-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96120-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96120-02\"\n", - " },\n", - " \"name\": \"23-YAHH-96120-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96120-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96120-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96120-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96119-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96119-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96119-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96119-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96119-01\"\n", - " },\n", - " \"name\": \"23-YAHH-96119-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96118-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96118-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96118-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96118-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96118-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96118-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96117-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96117-02\"\n", - " },\n", - " \"name\": \"23-YAHH-96117-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96117-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96117-01\"\n", - " },\n", - " \"name\": \"23-YAHH-96117-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96106-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96106-02\"\n", - " },\n", - " \"name\": \"23-YAHH-96106-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96106-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96106-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96106-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96105-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAHH-96105-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96105-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96105-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96105-01\"\n", - " },\n", - " \"name\": \"23-YAHH-96105-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAHH-96105\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FO-96105\"\n", - " },\n", - " \"name\": \"23-YAHH-96105\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96134-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96134-02\"\n", - " },\n", - " \"name\": \"23-YAH-96134-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96134-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96134-01\"\n", - " },\n", - " \"name\": \"23-YAH-96134-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96133-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96133-02\"\n", - " },\n", - " \"name\": \"23-YAH-96133-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96133-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96133-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96133-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96123\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96123\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96123\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96122\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96122\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96122\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96120-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96120-02\"\n", - " },\n", - " \"name\": \"23-YAH-96120-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96120-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96120-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96120-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96119-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96119-02\"\n", - " },\n", - " \"name\": \"23-YAH-96119-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96119-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96119-01\"\n", - " },\n", - " \"name\": \"23-YAH-96119-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96118-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96118-02\"\n", - " },\n", - " \"name\": \"23-YAH-96118-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96118-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96118-01\"\n", - " },\n", - " \"name\": \"23-YAH-96118-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96117-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96117-02\"\n", - " },\n", - " \"name\": \"23-YAH-96117-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96117-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96117-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96117-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96106-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-YAH-96106-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96106-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96106-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96106-01\"\n", - " },\n", - " \"name\": \"23-YAH-96106-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96105-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96105-02\"\n", - " },\n", - " \"name\": \"23-YAH-96105-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YAH-96105-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-YT-96105-01\"\n", - " },\n", - " \"name\": \"23-YAH-96105-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XZSL-92748\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XZSL-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XZSH-92748\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XZSH-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96164-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-96164-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KB-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96164-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KB-9103\"\n", - " },\n", - " \"name\": \"23-XY-96164-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96135\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XT-96135\"\n", - " },\n", - " \"name\": \"23-XY-96135\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96125\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-96125\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XT-96125\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96124\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XT-96124\"\n", - " },\n", - " \"name\": \"23-XY-96124\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-96108\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XT-96108\"\n", - " },\n", - " \"name\": \"23-XY-96108\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92748-04\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-92748-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92543-05\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-92543-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-05\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92543-04\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-92543-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-04\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92543-03\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-92543-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FY-92543-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92538-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XY-92538-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PV-92538\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XY-92538-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PV-92538\"\n", - " },\n", - " \"name\": \"23-XY-92538-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XX-9114\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-2ND STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-XX-9114\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XX-9106\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-XX-9106\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XX-9105\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XX-9105\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XVP-92748\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " },\n", - " \"name\": \"23-XVP-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92748-J01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " },\n", - " \"name\": \"23-XV-92748-J01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92748\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-XV-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92601\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"2nd Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92501\",\n", - " \"version\": 42,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"1st Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XT-96135\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XE-96135\"\n", - " },\n", - " \"name\": \"23-XT-96135\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XT-96125\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XT-96125\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XE-96125\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XT-96124\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XE-96124\"\n", - " },\n", - " \"name\": \"23-XT-96124\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XT-96108\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XT-96108\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XE-96108\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XS-96139\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-XS-96139\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XS-92529\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-LTX-92529\"\n", - " },\n", - " \"name\": \"23-XS-92529\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XPV-92748\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XPV-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92748\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XE-96135\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-XE-96135\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XE-96125\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-XE-96125\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XE-96124\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-XE-96124\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XE-96108\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XE-96108\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-96139\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XA-96139\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XS-96139\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-92543-09\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XA-92543-09\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-09\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-92543-08\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-08\"\n", - " },\n", - " \"name\": \"23-XA-92543-08\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-92543-07\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-07\"\n", - " },\n", - " \"name\": \"23-XA-92543-07\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-92543-06\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-XA-92543-06\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FS-92543-06\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XA-92529\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-LTX-92529\"\n", - " },\n", - " \"name\": \"23-XA-92529\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VG-9101\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 08:55:02.631+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", - " },\n", - " \"name\": \"23-VG-9101\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9114\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP ENCLOSURE-PH\"\n", - " },\n", - " \"name\": \"23-VA-9114\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110-M01-39\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " },\n", - " \"name\": \"23-VA-9110-M01-39\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110-M01-24\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-VA-9110-M01-24\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110-M01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VA-9110\"\n", - " },\n", - " \"name\": \"23-VA-9110-M01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110-H01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-VA-9110-H01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VA-9110\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110-A01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-VA-9110-A01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VA-9110\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-VA-9110\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-VA-9110\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TX-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TY-92604B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92604B\"\n", - " },\n", - " \"name\": \"23-TY-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TY-92504\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TY-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92504\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TX-96167\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PDT-96167\"\n", - " },\n", - " \"name\": \"23-TX-96167\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TX-9103\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TX-9103\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96196\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107B\"\n", - " },\n", - " \"name\": \"23-TW-96196\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96195\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9107A\"\n", - " },\n", - " \"name\": \"23-TW-96195\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96183\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96183\"\n", - " },\n", - " \"name\": \"23-TW-96183\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96181-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-03\"\n", - " },\n", - " \"name\": \"23-TW-96181-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96181-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-02\"\n", - " },\n", - " \"name\": \"23-TW-96181-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96181-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TW-96181-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-96148\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TW-96148\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96148\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TW-92524\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TI-92524\"\n", - " },\n", - " \"name\": \"23-TW-92524\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TV-92604B\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-TV-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TV-92504\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TV-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96183\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9106\"\n", - " },\n", - " \"name\": \"23-TT-96183\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96181-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-96181-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96181-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-96181-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96181-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-01\"\n", - " },\n", - " \"name\": \"23-TT-96181-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96168\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP DRY GAS SEAL SYS-PH\"\n", - " },\n", - " \"name\": \"23-TT-96168\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96148\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-96148\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96147-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"23-TT-96147-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96115-01\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"1st Stage Gear Thrust Bearing Temperature\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92604B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"230900\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92604A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92604A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92604B\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92604\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92604\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92604B\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92603\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92603\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92602\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-TT-92602\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92539 (2)\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-TT-92539 (2)\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92539\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-TT-92539\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92537\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92537\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92536-MB\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92536\"\n", - " },\n", - " \"name\": \"23-TT-92536-MB\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92536\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92536\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92533\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " },\n", - " \"name\": \"23-TT-92533\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92532-MB\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92532\"\n", - " },\n", - " \"name\": \"23-TT-92532-MB\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92532\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92532\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSOR-PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92512\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92512\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92504\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92504\"\n", - " },\n", - " \"name\": \"23-TT-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92502\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TT-92502\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TSHH-96197\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9106\"\n", - " },\n", - " \"name\": \"23-TSHH-96197\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TSHH-96147-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"23-TSHH-96147-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TSHH-96147\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"23-TSHH-96147\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TL-8602\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Portable Gas Detector\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TL-8601\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TIC-96148\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96148\"\n", - " },\n", - " \"name\": \"23-TIC-96148\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TIC-96147\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96147-02\"\n", - " },\n", - " \"name\": \"23-TIC-96147\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TIC-92604B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92604B\"\n", - " },\n", - " \"name\": \"23-TIC-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TIC-92604\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92604B\"\n", - " },\n", - " \"name\": \"23-TIC-92604\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TIC-92504\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TV-92504\"\n", - " },\n", - " \"name\": \"23-TIC-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96183\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96183\"\n", - " },\n", - " \"name\": \"23-TI-96183\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96181-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96181-03\"\n", - " },\n", - " \"name\": \"23-TI-96181-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96168\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96168\"\n", - " },\n", - " \"name\": \"23-TI-96168\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96148\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96148\"\n", - " },\n", - " \"name\": \"23-TI-96148\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96147-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96147-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96147-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96137-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96137-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96137-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96137-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96137-02\"\n", - " },\n", - " \"name\": \"23-TI-96137-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96137-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96137-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96137-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-08\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-08\"\n", - " },\n", - " \"name\": \"23-TI-96136-08\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-07\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-07\"\n", - " },\n", - " \"name\": \"23-TI-96136-07\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-05\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-05\"\n", - " },\n", - " \"name\": \"23-TI-96136-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-04\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-04\"\n", - " },\n", - " \"name\": \"23-TI-96136-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-02\"\n", - " },\n", - " \"name\": \"23-TI-96136-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96136-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96136-01\"\n", - " },\n", - " \"name\": \"23-TI-96136-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96132-02\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96132-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96132-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96132-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96132-01\"\n", - " },\n", - " \"name\": \"23-TI-96132-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96131-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96131-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96131-02\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96131-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96131-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96131-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96114-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96114-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96114-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96114-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96114-01\"\n", - " },\n", - " \"name\": \"23-TI-96114-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96113-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96113-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96113-03\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96113-01\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96113-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96113-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96112-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96112-03\"\n", - " },\n", - " \"name\": \"23-TI-96112-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96112-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96112-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96112-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96111-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96111-03\"\n", - " },\n", - " \"name\": \"23-TI-96111-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96111-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96111-01\"\n", - " },\n", - " \"name\": \"23-TI-96111-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96104\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FG-96104\"\n", - " },\n", - " \"name\": \"23-TI-96104\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96103\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FG-96103\"\n", - " },\n", - " \"name\": \"23-TI-96103\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96102-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96102-03\"\n", - " },\n", - " \"name\": \"23-TI-96102-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96102-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-96102-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96102-01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96101-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96101-03\"\n", - " },\n", - " \"name\": \"23-TI-96101-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-96101-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TE-96101-01\"\n", - " },\n", - " \"name\": \"23-TI-96101-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92604A\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92604A\"\n", - " },\n", - " \"name\": \"23-TI-92604A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92603\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-92603\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92603\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92602\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-92602\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92602\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92539\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92539\"\n", - " },\n", - " \"name\": \"23-TI-92539\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92537\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92537\"\n", - " },\n", - " \"name\": \"23-TI-92537\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92536\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92536\"\n", - " },\n", - " \"name\": \"23-TI-92536\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92533 (2)\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-92533 (2)\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92533\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92533\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-92533\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92533\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92532\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92532\"\n", - " },\n", - " \"name\": \"23-TI-92532\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92524\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-VG-9101\"\n", - " },\n", - " \"name\": \"23-TI-92524\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92512\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92512\"\n", - " },\n", - " \"name\": \"23-TI-92512\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TI-92502\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TI-92502\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-92502\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96183\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96183\"\n", - " },\n", - " \"name\": \"23-TE-96183\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96181-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"23-TE-96181-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96181-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"23-TE-96181-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96181-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMP LUBE OIL SYS-PH\"\n", - " },\n", - " \"name\": \"23-TE-96181-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96168\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96168\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96168\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96148\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96148\"\n", - " },\n", - " \"name\": \"23-TE-96148\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96147-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96147-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96147\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FE-9122\"\n", - " },\n", - " \"name\": \"23-TE-96147\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96137-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96137-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96137-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96137-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96137-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96137-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-09\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96136-09\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-08\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96136-08\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-07\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96136-07\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-06\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96136-06\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-05\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96136-05\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-04\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96136-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96136-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96136-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96136-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96136-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96132-02\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96132-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96132-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.864+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96132-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96131-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96131-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96131-01\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9101-M01\"\n", - " },\n", - " \"name\": \"23-TE-96131-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96116-04\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96116-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96116-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96116-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96116-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96116-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96116-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96116-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96115-04\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96115-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96115-03\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96115-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96115-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96115-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96115-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96115-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96114-04\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96114-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96114-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96114-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96114-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96114-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96114-01\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96114-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96113-04\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " },\n", - " \"name\": \"23-TE-96113-04\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ]\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96113-03\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96113-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-96113-02\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"name\": \"23-TE-96113-02\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DB-9101\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - " }\n", - "]\n" - ] - } - ], - "source": [ - "# Discover a real sourceContext value in INST_SP so the query actually returns something.\n", - "from collections import Counter\n", - "\n", - "probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", - "source_contexts = Counter(\n", - " (node.properties.get(asset_vid, {}) or {}).get(\"sourceContext\")\n", - " for node in probe\n", - ")\n", - "print(\"sourceContext distribution (top 5):\", source_contexts.most_common(5))\n", - "\n", - "sourceContext = next((val for val, _ in source_contexts.most_common() if val), None)\n", - "if sourceContext is None:\n", - " raise RuntimeError(\n", - " \"No Tag in INST_SP has a populated sourceContext - pick another filter property.\"\n", - " )\n", - "print(f\"Querying Tags with sourceContext == {sourceContext!r}\")\n", - "\n", - "query = Query(\n", - " with_={ # FROM all Nodes WHERE space = INST_SP AND has data in asset view AND sourceContext = \n", - " \"assets\": NodeResultSetExpression(\n", - " filter=And(\n", - " Equals([\"node\", \"space\"], value={\"parameter\": \"space\"}),\n", - " HasData(views=[asset_vid]),\n", - " Equals(property=asset_vid.as_property_ref(\"sourceContext\"), value={\"parameter\": \"sourceContext\"}),\n", - " ),\n", - " limit=500,\n", - " sort=[InstanceSort(property=(\"node\", \"externalId\"), direction=\"descending\")],\n", - " ),\n", - " },\n", - " select={ # SELECT name, parent, tags FROM assets\n", - " \"assets\": Select(\n", - " [SourceSelector(asset_vid, [\"name\", \"parent\", \"tags\"])],\n", - " ),\n", - " },\n", - " parameters={\"space\": INST_SP, \"sourceContext\": sourceContext},\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " assets = res[\"assets\"]\n", - " print(len(assets))\n", - " print(assets)\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, - { - "cell_type": "markdown", - "id": "2d1b93a4", - "metadata": {}, - "source": [ - "# Get subtree of an asset\n", - "\n", - "Getting a subset of assets based on a root is a common use case. Use the 'path' property to extract all assets with a given node in their paths." - ] - }, - { - "cell_type": "markdown", - "id": "14026805", - "metadata": {}, - "source": [ - "### With ContainsAll" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ddf4035e", - "metadata": {}, - "outputs": [], - "source": [ - "# Pick a real subtree root: any Tag that is referenced as another Tag's parent\n", - "# is guaranteed to have at least one child, so ContainsAll/Prefix on path will\n", - "# return something. Cached as `sub_tree_root` for the Prefix cell below too.\n", - "try:\n", - " sub_tree_root\n", - "except NameError:\n", - " probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", - " sub_tree_root = None\n", - " for node in probe:\n", - " parent = (node.properties.get(asset_vid, {}) or {}).get(\"parent\")\n", - " if parent and parent.get(\"space\") and parent.get(\"externalId\"):\n", - " sub_tree_root = NodeId(parent[\"space\"], parent[\"externalId\"])\n", - " break\n", - " if sub_tree_root is None:\n", - " raise RuntimeError(\n", - " \"No Tag in INST_SP has a populated `parent` - cannot derive a subtree root.\"\n", - " )\n", - " print(f\"Using subtree root: {sub_tree_root}\")\n", - "\n", - "start_time = time.time()\n", - "sub_tree_nodes = client.data_modeling.instances.list(\n", - " sources=asset_vid,\n", - " filter=ContainsAll(property=asset_vid.as_property_ref(\"path\"), values=[sub_tree_root]),\n", - " limit=500,\n", - ")\n", - "contains_time = time.time() - start_time\n", - "print(f\"ContainsAll filter call took: {contains_time:.3f} seconds\")\n", - "print(len(sub_tree_nodes))\n", - "print(sub_tree_nodes)" - ] - }, - { - "cell_type": "markdown", - "id": "8282cf56", - "metadata": {}, - "source": [ - "### With Prefix (recommended)\n", - "\n", - "`Prefix` on `path` uses the prefix index and is typically much faster than `ContainsAll` for subtree extraction. Prefer `Prefix` whenever you have the root's full `path`. Use `ContainsAll` only when you need to match a node at an arbitrary position in the path." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "2e7854ab", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using subtree root: NodeId(space='inst_location', external_id='VAL-PH-23')\n", - "Prefix filter call took: 0.184 seconds\n", - "90\n", - "[\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-EL\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Electrical Distribution\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"Power generation and distribution\",\n", - " \"sourceId\": \"VAL-PH-23-EL\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-GC\",\n", - " \"version\": 34,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Gas Compression System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"1st 2nd 3rd stage gas compression\",\n", - " \"sourceId\": \"VAL-PH-23-GC\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-UT\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Utilities System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"General utilities and support\",\n", - " \"sourceId\": \"VAL-PH-23-UT\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-WT\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Water Treatment System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"Seawater and chemical injection\",\n", - " \"sourceId\": \"VAL-PH-23-WT\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"626221d1-e8f3-4761-97bd-239e013c7f75\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Module Support Structure\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Compressor module support steel\",\n", - " \"sourceId\": \"626221d1-e8f3-4761-97bd-239e013c7f75\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Instrument Equipment Room\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Instrument equipment room enclosure\",\n", - " \"sourceId\": \"6b0eb178-2c4f-4fca-901b-2c59bf812582\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Safety Relief Valve\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Pressure safety valve 1st stage discharge\",\n", - " \"sourceId\": \"a4b91d72-0d1b-4902-a8d4-98dfcbeabf70\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"2nd Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Emergency shutdown valve 2nd stage suction\",\n", - " \"sourceId\": \"cd5759fc-0fa0-4ce3-9831-47529722f738\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Suction Line 16in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"16 inch suction line from scrubber to 1st stage compressor\",\n", - " \"sourceId\": \"0192bf8a-c9a6-4f47-b491-208e6c11e351\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Seawater Lift Pump B\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Centrifugal seawater lift pump train B\",\n", - " \"sourceId\": \"1d338ea3-7841-43fc-afe6-702966cbbffc\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Portable Gas Detector\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Portable multi-gas detector for confined space\",\n", - " \"sourceId\": \"4d839ff3-3a8f-4258-81d5-08409cdf2475\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"a86482db-1947-43e7-9781-67c6bc38ad09\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Medium voltage motor for 1st stage compressor\",\n", - " \"sourceId\": \"a86482db-1947-43e7-9781-67c6bc38ad09\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"PA/GA System Process Area\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"description\": \"Public address and general alarm system\",\n", - " \"sourceId\": \"e3e89763-dd36-4823-9738-17d9a4fecd02\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"056df394-acc1-4b71-9897-0053e2aec3b0\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"056df394-acc1-4b71-9897-0053e2aec3b0\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Hydraulic torque wrench for flange bolting\",\n", - " \"sourceId\": \"056df394-acc1-4b71-9897-0053e2aec3b0\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"2a804545-b201-4985-822f-45c14ac0d1a5\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Electrical Equipment Room\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Main electrical equipment room enclosure\",\n", - " \"sourceId\": \"2a804545-b201-4985-822f-45c14ac0d1a5\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Discharge Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Shell and tube gas cooler after 1st stage\",\n", - " \"sourceId\": \"51afd982-edb1-4b71-a157-91e3a0d8085f\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"8e337b6f-be72-416e-bef0-3308975ae627\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"VFD 1st Stage Compressor\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Variable frequency drive for 1st stage compressor\",\n", - " \"sourceId\": \"8e337b6f-be72-416e-bef0-3308975ae627\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"af455e61-124c-46e9-9c9d-e962555a917c\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Performance Control Valve\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Anti-surge control valve 1st stage\",\n", - " \"sourceId\": \"af455e61-124c-46e9-9c9d-e962555a917c\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Lube Oil Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Plate heat exchanger for compressor lube oil\",\n", - " \"sourceId\": \"e43970f2-a955-44c7-beac-8f66eb2ae85d\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"PH 1st Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"1st stage centrifugal gas compressor\",\n", - " \"sourceId\": \"3ced891b-185a-4be3-be88-79ff4410ee8c\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Platform Main Deck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Main deck structural module\",\n", - " \"sourceId\": \"b1fc60ab-b304-4d80-a737-ec43765620c5\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.311+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"2nd Stage Suction Line 12in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"12 inch suction line to 2nd stage compressor\",\n", - " \"sourceId\": \"c754af3e-9ad6-40fc-95aa-4ab7e12655be\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Emergency Shower Station\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Emergency shower and eye wash station\",\n", - " \"sourceId\": \"238afe07-ae83-4b30-998c-d6e58b5c07c4\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Top Drive System\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"description\": \"Main top drive system\",\n", - " \"sourceId\": \"a8c58534-b905-4f84-b987-5e7a4881f26b\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Scrubber Level Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Level transmitter 1st stage suction scrubber\",\n", - " \"sourceId\": \"b3a5cc09-85d8-4196-a95f-61e2db77b49a\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"d271d97b-d105-49c2-977d-ec812b290554\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Scaffolding Kit A\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Standard scaffolding kit for maintenance\",\n", - " \"sourceId\": \"d271d97b-d105-49c2-977d-ec812b290554\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"dda44393-0a89-4654-a84f-af33ba19b93a\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Chemical Injection Pump\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Positive displacement chemical injection pump\",\n", - " \"sourceId\": \"dda44393-0a89-4654-a84f-af33ba19b93a\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Process Hall Overhead Crane 10T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"10 tonne overhead crane process hall\",\n", - " \"sourceId\": \"8b16b072-2c1c-4cd1-a13b-a70821d770e4\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"a98260bd-c718-446c-901a-913809d4f095\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Gas Turbine Generator B\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"GE LM2500 gas turbine generator set B\",\n", - " \"sourceId\": \"a98260bd-c718-446c-901a-913809d4f095\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"df052853-f39c-405b-a275-33768b91c623\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.613+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"df052853-f39c-405b-a275-33768b91c623\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Gas Turbine Generator A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"GE LM2500 gas turbine generator set A\",\n", - " \"sourceId\": \"df052853-f39c-405b-a275-33768b91c623\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Lifting Sling Assembly\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Certified lifting sling assembly 5T\",\n", - " \"sourceId\": \"5e0ae159-18b3-4970-88b7-9dd8995fcc5e\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"9266fab7-6edf-4411-a0a2-3074e322853f\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Differential pressure transmitter suction cooler\",\n", - " \"sourceId\": \"9266fab7-6edf-4411-a0a2-3074e322853f\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Pressure transmitter suction 1st stage compressor\",\n", - " \"sourceId\": \"94ccd3cc-48de-46d5-a9ec-890a78c5d716\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Gas Detection System\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Combustible gas detection system area 23\",\n", - " \"sourceId\": \"04d754eb-8ddd-4ea4-9b01-82365b85cfc2\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Gas Export Line 24in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"24 inch gas export pipeline\",\n", - " \"sourceId\": \"0912fe96-a0f5-4fec-b3d8-8446cd03e230\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"PH 3rd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"3rd stage centrifugal gas compressor\",\n", - " \"sourceId\": \"839e57a0-6765-4bd4-b7d7-1dfde9c1d969\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:47.865+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"PH 2nd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"2nd stage centrifugal gas compressor\",\n", - " \"sourceId\": \"c9a063b9-f0d1-433b-8c80-bdaaf1d949f5\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Deluge Fire Protection Station A\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Deluge system fire protection station A\",\n", - " \"sourceId\": \"27f56b30-4aa3-4db9-8cdd-6d5ba4d84566\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"6ead339e-d534-4778-a891-9312b2f6108e\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Helideck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Helideck platform structure\",\n", - " \"sourceId\": \"6ead339e-d534-4778-a891-9312b2f6108e\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"ad443509-4fdb-4114-82a5-aa79bda20271\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"5 tonne overhead crane turbine hall\",\n", - " \"sourceId\": \"ad443509-4fdb-4114-82a5-aa79bda20271\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"UPS System Process Hall\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Uninterruptible power supply process hall\",\n", - " \"sourceId\": \"ccdafea7-5bf0-4d40-924e-3f786b44e9a3\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Gear Thrust Bearing Temp\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Temperature transmitter gear thrust bearing\",\n", - " \"sourceId\": \"47d4a39c-7c0b-46bb-a290-c47a7528dfef\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"2nd Stage Suction Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Shell and tube gas cooler before 2nd stage\",\n", - " \"sourceId\": \"682ec198-fcb1-4d86-b50d-34b1a8f48fe7\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"8819a855-4229-4cb0-a975-967c6c3d935b\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Emergency shutdown valve 1st stage suction\",\n", - " \"sourceId\": \"8819a855-4229-4cb0-a975-967c6c3d935b\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"933aa789-5571-48bf-91a3-234f2a66522e\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Network Switch Cabinet A\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"description\": \"Main network switch cabinet area 23\",\n", - " \"sourceId\": \"933aa789-5571-48bf-91a3-234f2a66522e\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"9e64206b-39d2-442f-bd80-4864ee58104d\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Drilling Derrick Assembly\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"description\": \"Main drilling derrick structure\",\n", - " \"sourceId\": \"9e64206b-39d2-442f-bd80-4864ee58104d\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", - " \"version\": 5,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.485+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Flow transmitter 1st stage compressor\",\n", - " \"sourceId\": \"d28a5c2c-2800-4370-8c77-6647a45b1cb0\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", - " \"version\": 6,\n", - " \"last_updated_time\": \"2026-03-23 08:58:53.319+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:48.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Seawater Lift Pump A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Centrifugal seawater lift pump train A\",\n", - " \"sourceId\": \"f4af554c-57aa-4043-ad2b-263aa9e34485\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-KA-9102\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.246+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:22.932+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9102\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"PH 2nd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"2nd stage centrifugal gas compressor\",\n", - " \"sourceId\": \"23-KA-9102\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PSV-92550\",\n", - " \"version\": 46,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:22.932+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PSV-92550\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"1st Stage Discharge Safety Relief Valve\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Maintenance record 1st stage PSV\",\n", - " \"sourceId\": \"23-PSV-92550\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EA-9501\",\n", - " \"version\": 45,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EA-9501\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"1st Stage Discharge Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Maintenance record 1st stage discharge cooler\",\n", - " \"sourceId\": \"23-EA-9501\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EL-9701\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EL-9701\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"MV Motor 1st Stage Compressor Drive\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Medium voltage motor for 1st stage compressor\",\n", - " \"sourceId\": \"23-EL-9701\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PT-92501\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PT-92501\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"1st Stage Suction Pressure Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Pressure transmitter suction 1st stage compressor\",\n", - " \"sourceId\": \"23-PT-92501\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92501\",\n", - " \"version\": 42,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:24.898+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92501\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"1st Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Maintenance record for 1st stage ESDV\",\n", - " \"sourceId\": \"23-XV-92501\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-GT-9401\",\n", - " \"version\": 42,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:25.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-GT-9401\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", - " \"name\": \"Gas Turbine Generator A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Maintenance record gas turbine generator A\",\n", - " \"sourceId\": \"23-GT-9401\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PA-9201A\",\n", - " \"version\": 41,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-18 13:15:25.062+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PA-9201A\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Seawater Lift Pump A\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Centrifugal seawater lift pump train A\",\n", - " \"sourceId\": \"23-PA-9201A\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-L-92701\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-18 19:19:32.744+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-L-92701\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"Gas Export Line 24in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"24 inch gas export pipeline\",\n", - " \"sourceId\": \"23-L-92701\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PCV-92538\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PCV-92538\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Anti-Surge Control Valve\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Anti-surge control valve 1st stage\",\n", - " \"sourceId\": \"23-PCV-92538\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92601\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:33.762+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XV-92601\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"2nd Stage Suction ESDV\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"Emergency shutdown valve 2nd stage suction\",\n", - " \"sourceId\": \"23-XV-92601\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EA-9502\",\n", - " \"version\": 36,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EA-9502\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"2nd Stage Discharge Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Shell and tube gas cooler before 2nd stage\",\n", - " \"sourceId\": \"23-EA-9502\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EA-9503\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EA-9503\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"Lube Oil Cooler\",\n", - " \"tags\": [\n", - " \"static-equipment\"\n", - " ],\n", - " \"description\": \"Plate heat exchanger for compressor lube oil\",\n", - " \"sourceId\": \"23-EA-9503\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PA-9201B\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:34.355+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PA-9201B\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Seawater Lift Pump B\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Centrifugal seawater lift pump train B\",\n", - " \"sourceId\": \"23-PA-9201B\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-FT-92537\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-FT-92537\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"1st Stage Compressor Flow Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Flow transmitter 1st stage compressor\",\n", - " \"sourceId\": \"23-FT-92537\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-GT-9402\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-GT-9402\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Gas Turbine Generator B\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"GE LM2500 gas turbine generator set B\",\n", - " \"sourceId\": \"23-GT-9402\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-KA-9103\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-KA-9103\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"PH 3rd Stage Gas Compressor\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"3rd stage centrifugal gas compressor\",\n", - " \"sourceId\": \"23-KA-9103\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-L-92501\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-L-92501\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"1st Stage Suction Line 16in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"16 inch suction line from scrubber to 1st stage compressor\",\n", - " \"sourceId\": \"23-L-92501\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-L-92601\",\n", - " \"version\": 28,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-L-92601\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"2nd Stage Suction Line 12in\",\n", - " \"tags\": [\n", - " \"piping-equipment\"\n", - " ],\n", - " \"description\": \"12 inch suction line to 2nd stage compressor\",\n", - " \"sourceId\": \"23-L-92601\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-96115-01\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TT-96115-01\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"1st Stage Gear Thrust Bearing Temperature\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Temperature transmitter gear thrust bearing\",\n", - " \"sourceId\": \"23-TT-96115-01\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23\",\n", - " \"version\": 34,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Area 23 Gas Compression\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"Gas compression area 23\",\n", - " \"sourceId\": \"VAL-PH-23\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TL-8602\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TL-8602\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Portable Gas Detector\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Portable multi-gas detector for confined space entry\",\n", - " \"sourceId\": \"23-TL-8602\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-DR-9902\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DR-9902\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Top Drive System\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"description\": \"Main top drive system\",\n", - " \"sourceId\": \"23-DR-9902\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EL-9703\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.326+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EL-9703\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"VFD 1st Stage Compressor\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Variable frequency drive for 1st stage compressor\",\n", - " \"sourceId\": \"23-EL-9703\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-IT-8302\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-IT-8302\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"PA/GA System Process Area\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"description\": \"Public address and general alarm system\",\n", - " \"sourceId\": \"23-IT-8302\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ME-9802\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ME-9802\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Turbine Hall Overhead Crane 5T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"5 tonne overhead crane turbine hall\",\n", - " \"sourceId\": \"23-ME-9802\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EN-8001\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EN-8001\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Electrical Equipment Room\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Main electrical equipment room enclosure\",\n", - " \"sourceId\": \"23-EN-8001\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EN-8002\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EN-8002\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"Instrument Equipment Room\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Instrument equipment room enclosure\",\n", - " \"sourceId\": \"23-EN-8002\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-IF-8201\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-IF-8201\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Platform Main Deck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Main deck structural module\",\n", - " \"sourceId\": \"23-IF-8201\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-IF-8202\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-IF-8202\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-GC\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.760628+00:00\",\n", - " \"name\": \"Module Support Structure\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Compressor module support steel\",\n", - " \"sourceId\": \"23-IF-8202\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-MI-8402\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.793+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-MI-8402\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.319752+00:00\",\n", - " \"name\": \"Scaffolding Kit A\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Standard scaffolding kit for maintenance\",\n", - " \"sourceId\": \"23-MI-8402\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-EL-9702\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.984+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-EL-9702\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-EL\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"UPS System Process Hall\",\n", - " \"tags\": [\n", - " \"electrical-equipment\"\n", - " ],\n", - " \"description\": \"Uninterruptible power supply process hall\",\n", - " \"sourceId\": \"23-EL-9702\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-DR-9901\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:52.984+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-DR-9901\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:53.48514+00:00\",\n", - " \"name\": \"Drilling Derrick Assembly\",\n", - " \"tags\": [\n", - " \"drilling-equipment\"\n", - " ],\n", - " \"description\": \"Main drilling derrick structure\",\n", - " \"sourceId\": \"23-DR-9901\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HS-8103\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.955+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HS-8103\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Gas Detection System\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Combustible gas detection system area 23\",\n", - " \"sourceId\": \"23-HS-8103\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-IT-8301\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-IT-8301\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Network Switch Cabinet A\",\n", - " \"tags\": [\n", - " \"telecom-equipment\"\n", - " ],\n", - " \"description\": \"Main network switch cabinet area 23\",\n", - " \"sourceId\": \"23-IT-8301\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-MI-8401\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-MI-8401\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Lifting Sling Assembly\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Certified lifting sling assembly 5T\",\n", - " \"sourceId\": \"23-MI-8401\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PA-9202\",\n", - " \"version\": 33,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-PA-9202\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-WT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Chemical Injection Pump MEG\",\n", - " \"tags\": [\n", - " \"rotating-equipment\"\n", - " ],\n", - " \"description\": \"Positive displacement diaphragm chemical injection pump\",\n", - " \"sourceId\": \"23-PA-9202\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-IF-8203\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-IF-8203\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Helideck\",\n", - " \"tags\": [\n", - " \"infrastructure\"\n", - " ],\n", - " \"description\": \"Helideck platform structure\",\n", - " \"sourceId\": \"23-IF-8203\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ME-9801\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.507+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-ME-9801\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.079058+00:00\",\n", - " \"name\": \"Process Hall Overhead Crane 10T\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"10 tonne overhead crane process hall\",\n", - " \"sourceId\": \"23-ME-9801\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HS-8101\",\n", - " \"version\": 43,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HS-8101\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", - " \"name\": \"Deluge Fire Protection Station A\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Maintenance record deluge fire protection\",\n", - " \"sourceId\": \"23-HS-8101\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HS-8102\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HS-8102\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", - " \"name\": \"Emergency Shower Station\",\n", - " \"tags\": [\n", - " \"safety-equipment\"\n", - " ],\n", - " \"description\": \"Emergency shower and eye wash station\",\n", - " \"sourceId\": \"23-HS-8102\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TL-8601\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 08:58:53.987+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"path\": [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-TL-8601\"\n", - " }\n", - " ],\n", - " \"root\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH\"\n", - " },\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23-UT\"\n", - " },\n", - " \"pathLastUpdatedTime\": \"2026-03-23T08:58:54.32005+00:00\",\n", - " \"name\": \"Hydraulic Torque Wrench 3/4in\",\n", - " \"tags\": [\n", - " \"mechanical-equipment\"\n", - " ],\n", - " \"description\": \"Hydraulic torque wrench for flange bolting\",\n", - " \"sourceId\": \"23-TL-8601\",\n", - " \"sourceContext\": \"cfihos_test\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "]\n" - ] - } - ], - "source": [ - "# Reuse sub_tree_root if the ContainsAll cell above has been run; otherwise discover one.\n", - "try:\n", - " sub_tree_root\n", - "except NameError:\n", - " probe = client.data_modeling.instances.list(sources=asset_vid, space=INST_SP, limit=200)\n", - " sub_tree_root = None\n", - " for node in probe:\n", - " parent = (node.properties.get(asset_vid, {}) or {}).get(\"parent\")\n", - " if parent and parent.get(\"space\") and parent.get(\"externalId\"):\n", - " sub_tree_root = NodeId(parent[\"space\"], parent[\"externalId\"])\n", - " break\n", - " if sub_tree_root is None:\n", - " raise RuntimeError(\n", - " \"No Tag in INST_SP has a populated `parent` - cannot derive a subtree root.\"\n", - " )\n", - " print(f\"Using subtree root: {sub_tree_root}\")\n", - "\n", - "# Retrieve the root asset first to get its path (excluded from the timing below).\n", - "sub_tree_root_retrieved = client.data_modeling.instances.retrieve_nodes(\n", - " sub_tree_root,\n", - " sources=asset_vid,\n", - ")\n", - "\n", - "start_time = time.time()\n", - "sub_tree_nodes_prefix = client.data_modeling.instances.list(\n", - " sources=asset_vid,\n", - " filter=Prefix(\n", - " property=asset_vid.as_property_ref(\"path\"),\n", - " value=sub_tree_root_retrieved.properties.data[asset_vid][\"path\"],\n", - " ),\n", - " limit=500,\n", - ")\n", - "prefix_time = time.time() - start_time\n", - "print(f\"Prefix filter call took: {prefix_time:.3f} seconds\")\n", - "print(len(sub_tree_nodes_prefix))\n", - "print(sub_tree_nodes_prefix)" - ] - }, - { - "cell_type": "markdown", - "id": "62c0010b", - "metadata": {}, - "source": [ - "## Get multiple representations of an asset\n", - "\n", - "As you know, a single instance may have its properties in multiple views. When querying, listing or retrieval, it's possible to get multiple sources (views) along with their properties." - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "9c1a62b6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
value
spaceinst_location
external_idVAL-PH-23-WT
version35
last_updated_time2026-05-08 12:42:07.619000
created_time2026-03-18 13:14:46.171000
instance_typenode
path[{'space': 'inst_location', 'externalId': 'VAL...
root{'space': 'inst_location', 'externalId': 'VAL-...
parent{'space': 'inst_location', 'externalId': 'VAL-...
pathLastUpdatedTime2026-03-23T08:58:53.319752+00:00
nameWater Treatment System
tags[functional-location]
descriptionSeawater and chemical injection
sourceIdVAL-PH-23-WT
sourceContextcfihos_test
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "asset_external_id = \"VAL-PH-23-WT\"\n", - "space = INST_SP\n", - "client.data_modeling.instances.retrieve_nodes(\n", - " NodeId(space, asset_external_id),\n", - " # NOTE: `cdf_cdm` is not installed in this project. The original example added\n", - " # cognite_asset_vid and describable_vid here to retrieve the same node viewed\n", - " # through CDM. Add additional view IDs (e.g. asset_vid and any view that 'implements'\n", - " # it, like FunctionalLocation) here if you want multi-view hydration.\n", - " sources=[asset_vid],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "7ea3b8cc", - "metadata": {}, - "source": [ - "### The same call using query SDK" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "7802256c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"VAL-PH-23-WT\",\n", - " \"version\": 35,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-18 13:14:46.171+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"VAL-PH-23\"\n", - " },\n", - " \"name\": \"Water Treatment System\",\n", - " \"tags\": [\n", - " \"functional-location\"\n", - " ],\n", - " \"description\": \"Seawater and chemical injection\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "]\n" - ] - } - ], - "source": [ - "asset_external_id = \"VAL-PH-23-WT\"\n", - "# Note: SpaceFilter does not accept {\"parameter\": ...} - use Equals((\"node\", \"space\"), ...)\n", - "# if you need to parameterize space. See \"parent / children\" example below.\n", - "query = Query(\n", - " with_={ # FROM all Nodes WHERE space = INST_SP and externalId = CNY-AC\n", - " \"assets\": NodeResultSetExpression(\n", - " filter=And(\n", - " Equals([\"node\", \"externalId\"], value=asset_external_id),\n", - " SpaceFilter(space=INST_SP),\n", - " ),\n", - " ),\n", - " },\n", - " select={\n", - " # seeing the same instance through multiple views - request only the properties you need\n", - " \"assets\": Select(\n", - " [\n", - " SourceSelector(asset_vid, [\"name\", \"description\", \"tags\", \"parent\"]),\n", - " # CDM views (cognite_asset_vid, describable_vid) are not installed\n", - " # in this project. Add other project view IDs here if needed.\n", - " ],\n", - " ),\n", - " },\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(res[\"assets\"])\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, - { - "cell_type": "markdown", - "id": "0c6dea9a", - "metadata": {}, - "source": [ - "## Get parent and/or children of an asset\n", - "\n", - "### Note that you can use this logic for any kind of **single** direct relations (and their reverse). For example, you can retrieve the type of the asset (see below)\n", - "\n", - "This way, you can traverse a graph using direct relations" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "cb9d9653", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "asset: [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XX-9105\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-1ST STAGE COMPRESSION-PH\"\n", - " },\n", - " \"name\": \"23-XX-9105\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - 1ST STAGE SUCTION/DISCHARGE COOLER SKID\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "]\n", - "parent: [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-1ST STAGE COMPRESSION-PH\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"230900\"\n", - " },\n", - " \"name\": \"23-1ST STAGE COMPRESSION-PH\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"1ST STAGE COMPRESSION ON PH\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "]\n", - "children: [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"90-MX-9245\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.551+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XX-9105\"\n", - " },\n", - " \"name\": \"90-MX-9245\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - MONORAIL OVER WALKWAY FOR EQUIPMENT ON SKID 23-XX-9105\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HA-9103\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XX-9105\"\n", - " },\n", - " \"name\": \"23-HA-9103\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - 1ST STAGE SUCTION COOLER\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HA-9114\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.625+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XX-9105\"\n", - " },\n", - " \"name\": \"23-HA-9114\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - 1ST STAGE DISCHARGE COOLER 1\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HA-9115\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-XX-9105\"\n", - " },\n", - " \"name\": \"23-HA-9115\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - 1ST STAGE DISCHARGE COOLER 2\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "] (count=4)\n", - "further_children: [\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PDT-92501\",\n", - " \"version\": 30,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.619+00:00\",\n", - " \"created_time\": \"2026-03-18 19:28:36.563+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"1st Stage Suction Cooler dP Transmitter\",\n", - " \"tags\": [\n", - " \"instrument-equipment\"\n", - " ],\n", - " \"description\": \"Differential pressure transmitter suction cooler\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92609\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-HV-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92613\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-PSV-92613\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92607B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.229+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.661+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-TT-92607B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-XV-92748\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-XV-92748\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH OFFGAS TO 1STSTGSUCTCOOLER\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDT-92506\",\n", - " \"version\": 27,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.282+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PDT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PDT-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-PDT-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL CM\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-FT-92512\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-FT-92512\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-HV-92545\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-HV-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL YSV OUTLET\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PDT-92502\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.902+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-PDT-92502\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL TUBES\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PDT-92602\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-PDT-92602\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1ST STG DISCH GAS COOLERS\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PV-92538\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-PV-92538\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGCOMP SUCTION STV\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92502\",\n", - " \"version\": 26,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-TT-92502\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92603\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:25.797+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-TT-92603\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL GAS OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ESDV-92551B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-ESDV-92551B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCHCLR GAS OUT EQ\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PT-92504\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.443+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-PT-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-92604B\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-TE-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-PT-92512\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-PT-92512\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TT-92512\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-TT-92512\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92609\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.023+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-PT-92609\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL CM OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:26.290+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-TT-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCLR COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TV-92504\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-TV-92504\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL CM IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TV-92604B\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-TV-92604B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSV-92545\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.422+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-YSV-92545\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCHCOOLER B/D\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92510S\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PSV-92510S\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92514\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PSV-92514\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1ST STG SUCT COOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92607A\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:08.533+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-TT-92607A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ESDV-92501A\",\n", - " \"version\": 23,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:27.439+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-ESDV-92501A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCLR GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92510-01\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:10.288+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-HV-92510-01\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL PSV IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92510-03\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-HV-92510-03\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL SHELL PSV OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92612\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.236+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-PSV-92612\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92608\",\n", - " \"version\": 24,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.689+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.147+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9115\"\n", - " },\n", - " \"name\": \"45-PT-92608\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL CM OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FT-92506\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-FT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ESDV-92501B\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:07.332+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-ESDV-92501B\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCLR GAS IN EQUAL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-FV-92543\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.916+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.328+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-FV-92543\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGCOMP ANTI-SURGE\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-ESDV-92551A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.257+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-ESDV-92551A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCHCLR GAS OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-HV-92509\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-HV-92509\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PT-92508\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.429+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PT-92508\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL COOLMED OUT\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:11.632+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-TT-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCLR COOLMED SPLY\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-TE-92604A\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:09.497+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"23-TE-92604A\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"23-YSV-92445\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.647+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:29.979+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"23-YSV-92445\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCOOL GAS IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-FE-92606\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:05.798+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9114\"\n", - " },\n", - " \"name\": \"45-FE-92606\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGDISCCOOL COOLMED IN\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-PSV-92515\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-PSV-92515\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1ST STG SUCT COOL SHELL\"\n", - " }\n", - " }\n", - " }\n", - " },\n", - " {\n", - " \"space\": \"inst_location\",\n", - " \"external_id\": \"45-TT-92506\",\n", - " \"version\": 25,\n", - " \"last_updated_time\": \"2026-05-08 12:42:06.911+00:00\",\n", - " \"created_time\": \"2026-03-23 09:24:31.242+00:00\",\n", - " \"instance_type\": \"node\",\n", - " \"properties\": {\n", - " \"cdf_cdm\": {\n", - " \"CogniteAsset/v1\": {\n", - " \"parent\": {\n", - " \"space\": \"inst_location\",\n", - " \"externalId\": \"23-HA-9103\"\n", - " },\n", - " \"name\": \"45-TT-92506\",\n", - " \"tags\": [\n", - " \"tag\"\n", - " ],\n", - " \"description\": \"VRD - PH 1STSTGSUCTCLR COOLMED SPLY\"\n", - " }\n", - " }\n", - " }\n", - " }\n", - "] (count=44)\n", - "type: []\n" - ] - } - ], - "source": [ - "# asset_eid = \"WLL-6080740225\"\n", - "asset_eid = \"23-XX-9105\"\n", - "# Tip: parameterise space with Equals((\"node\",\"space\"), {\"parameter\": \"space\"}) - SpaceFilter\n", - "# does not currently accept {\"parameter\": \"...\"}.\n", - "ASSET_PROPS = [\"name\", \"description\", \"source\", \"parent\", \"tags\"]\n", - "query = Query(\n", - " with_={ # FROM all Nodes WHERE space = INST_SP and externalId = CNY-AC\n", - " \"asset\": NodeResultSetExpression(\n", - " filter=And(\n", - " Equals(property=(\"node\", \"externalId\"), value=asset_eid),\n", - " Equals(property=(\"node\", \"space\"), value={\"parameter\": \"space\"}),\n", - " ),\n", - " ),\n", - " \"parent\": NodeResultSetExpression(\n", - " from_=\"asset\",\n", - " through=asset_vid.as_property_ref(\"parent\"),\n", - " direction=\"outwards\",\n", - " ),\n", - " \"children\": NodeResultSetExpression(\n", - " from_=\"asset\",\n", - " through=asset_vid.as_property_ref(\"parent\"),\n", - " direction=\"inwards\",\n", - " ),\n", - " \"further_children\": NodeResultSetExpression(\n", - " from_=\"children\",\n", - " through=asset_vid.as_property_ref(\"parent\"),\n", - " direction=\"inwards\",\n", - " ),\n", - " \"type\": NodeResultSetExpression(\n", - " from_=\"asset\",\n", - " through=asset_vid.as_property_ref(\"type\"),\n", - " direction=\"outwards\",\n", - " ),\n", - " },\n", - " select={\n", - " \"asset\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", - " \"parent\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", - " \"children\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", - " \"further_children\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", - " \"type\": Select([SourceSelector(source=asset_vid, properties=ASSET_PROPS)]),\n", - " },\n", - " parameters={\"space\": INST_SP},\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(f\"asset: {res['asset']}\")\n", - " print(f\"parent: {res['parent']}\")\n", - " print(f\"children: {res['children']} (count={len(res['children'])})\")\n", - " print(f\"further_children: {res['further_children']} (count={len(res['further_children'])})\")\n", - " print(f\"type: {res['type']}\")\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "id": "d108767b", - "metadata": {}, - "source": [ - "## Using the Nested filter\n", - "\n", - "Nested filter allows to use property of the directly related View to filter the instances. The filter can be applied only to single direct relations. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e313608d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "asset (count=98):\n", - " VAL-PH-23-EL name='Electrical Distribution'\n", - " VAL-PH-23-GC name='Gas Compression System'\n", - " VAL-PH-23-UT name='Utilities System'\n", - " VAL-PH-23-WT name='Water Treatment System'\n", - " VAL-PH-48 name='Area 48 Subsea Systems'\n", - " 626221d1-e8f3-4761-97bd-239e013c7f75 name='Module Support Structure'\n", - " 6b0eb178-2c4f-4fca-901b-2c59bf812582 name='Instrument Equipment Room'\n", - " a4b91d72-0d1b-4902-a8d4-98dfcbeabf70 name='1st Stage Safety Relief Valve'\n", - " cd5759fc-0fa0-4ce3-9831-47529722f738 name='2nd Stage Suction ESDV'\n", - " 0192bf8a-c9a6-4f47-b491-208e6c11e351 name='1st Stage Suction Line 16in'\n", - " 1d338ea3-7841-43fc-afe6-702966cbbffc name='Seawater Lift Pump B'\n", - " 4d839ff3-3a8f-4258-81d5-08409cdf2475 name='Portable Gas Detector'\n", - " 6767827c-f362-4b04-b303-fb5669ecab2b name='Subsea Manifold'\n", - " a86482db-1947-43e7-9781-67c6bc38ad09 name='MV Motor 1st Stage Compressor Drive'\n", - " e3e89763-dd36-4823-9738-17d9a4fecd02 name='PA/GA System Process Area'\n", - " 056df394-acc1-4b71-9897-0053e2aec3b0 name='Hydraulic Torque Wrench 3/4in'\n", - " 2a804545-b201-4985-822f-45c14ac0d1a5 name='Electrical Equipment Room'\n", - " 423da2b8-3e47-4e1b-8139-c773f19508b2 name='Subsea Christmas Tree Well-1'\n", - " 51afd982-edb1-4b71-a157-91e3a0d8085f name='1st Stage Discharge Cooler'\n", - " 8e337b6f-be72-416e-bef0-3308975ae627 name='VFD 1st Stage Compressor'\n", - " af455e61-124c-46e9-9c9d-e962555a917c name='1st Stage Performance Control Valve'\n", - " e43970f2-a955-44c7-beac-8f66eb2ae85d name='Lube Oil Cooler'\n", - " 3ced891b-185a-4be3-be88-79ff4410ee8c name='PH 1st Stage Gas Compressor'\n", - " b1fc60ab-b304-4d80-a737-ec43765620c5 name='Platform Main Deck'\n", - " c754af3e-9ad6-40fc-95aa-4ab7e12655be name='2nd Stage Suction Line 12in'\n", - " 238afe07-ae83-4b30-998c-d6e58b5c07c4 name='Emergency Shower Station'\n", - " a8c58534-b905-4f84-b987-5e7a4881f26b name='Top Drive System'\n", - " b3a5cc09-85d8-4196-a95f-61e2db77b49a name='1st Stage Scrubber Level Transmitter'\n", - " d271d97b-d105-49c2-977d-ec812b290554 name='Scaffolding Kit A'\n", - " dda44393-0a89-4654-a84f-af33ba19b93a name='Chemical Injection Pump'\n", - " 8b16b072-2c1c-4cd1-a13b-a70821d770e4 name='Process Hall Overhead Crane 10T'\n", - " a98260bd-c718-446c-901a-913809d4f095 name='Gas Turbine Generator B'\n", - " df052853-f39c-405b-a275-33768b91c623 name='Gas Turbine Generator A'\n", - " 5e0ae159-18b3-4970-88b7-9dd8995fcc5e name='Lifting Sling Assembly'\n", - " 9266fab7-6edf-4411-a0a2-3074e322853f name='1st Stage Suction Cooler dP Transmitter'\n", - " 94ccd3cc-48de-46d5-a9ec-890a78c5d716 name='1st Stage Suction Pressure Transmitter'\n", - " c39906ea-0a81-4cb0-a002-9658b8846a38 name='Subsea Control Module A'\n", - " 04d754eb-8ddd-4ea4-9b01-82365b85cfc2 name='Gas Detection System'\n", - " 0912fe96-a0f5-4fec-b3d8-8446cd03e230 name='Gas Export Line 24in'\n", - " 839e57a0-6765-4bd4-b7d7-1dfde9c1d969 name='PH 3rd Stage Gas Compressor'\n", - " c9a063b9-f0d1-433b-8c80-bdaaf1d949f5 name='PH 2nd Stage Gas Compressor'\n", - " 27f56b30-4aa3-4db9-8cdd-6d5ba4d84566 name='Deluge Fire Protection Station A'\n", - " 6ead339e-d534-4778-a891-9312b2f6108e name='Helideck'\n", - " ad443509-4fdb-4114-82a5-aa79bda20271 name='Turbine Hall Overhead Crane 5T'\n", - " ccdafea7-5bf0-4d40-924e-3f786b44e9a3 name='UPS System Process Hall'\n", - " 47d4a39c-7c0b-46bb-a290-c47a7528dfef name='1st Stage Gear Thrust Bearing Temp'\n", - " 682ec198-fcb1-4d86-b50d-34b1a8f48fe7 name='2nd Stage Suction Cooler'\n", - " 8819a855-4229-4cb0-a975-967c6c3d935b name='1st Stage Suction ESDV'\n", - " 933aa789-5571-48bf-91a3-234f2a66522e name='Network Switch Cabinet A'\n", - " 9e64206b-39d2-442f-bd80-4864ee58104d name='Drilling Derrick Assembly'\n", - " d28a5c2c-2800-4370-8c77-6647a45b1cb0 name='1st Stage Compressor Flow Transmitter'\n", - " f4af554c-57aa-4043-ad2b-263aa9e34485 name='Seawater Lift Pump A'\n", - " 23-KA-9102 name='PH 2nd Stage Gas Compressor'\n", - " 23-PSV-92550 name='1st Stage Discharge Safety Relief Valve'\n", - " 23-EA-9501 name='1st Stage Discharge Cooler'\n", - " 23-EL-9701 name='MV Motor 1st Stage Compressor Drive'\n", - " 23-PT-92501 name='1st Stage Suction Pressure Transmitter'\n", - " 23-XV-92501 name='1st Stage Suction ESDV'\n", - " 48-SU-8501 name='Subsea Control Module A'\n", - " 23-GT-9401 name='Gas Turbine Generator A'\n", - " 23-PA-9201A name='Seawater Lift Pump A'\n", - " 23-L-92701 name='Gas Export Line 24in'\n", - " 48-SU-8502 name='Subsea Christmas Tree Well-1'\n", - " 48-SU-8503 name='Subsea Manifold'\n", - " 23-PCV-92538 name='1st Stage Anti-Surge Control Valve'\n", - " 23-XV-92601 name='2nd Stage Suction ESDV'\n", - " 23-EA-9502 name='2nd Stage Discharge Cooler'\n", - " 23-EA-9503 name='Lube Oil Cooler'\n", - " 23-PA-9201B name='Seawater Lift Pump B'\n", - " 23-FT-92537 name='1st Stage Compressor Flow Transmitter'\n", - " 23-GT-9402 name='Gas Turbine Generator B'\n", - " 23-KA-9103 name='PH 3rd Stage Gas Compressor'\n", - " 23-L-92501 name='1st Stage Suction Line 16in'\n", - " 23-L-92601 name='2nd Stage Suction Line 12in'\n", - " 23-TT-96115-01 name='1st Stage Gear Thrust Bearing Temperature'\n", - " VAL-PH-23 name='Area 23 Gas Compression'\n", - " 23-TL-8602 name='Portable Gas Detector'\n", - " 23-DR-9902 name='Top Drive System'\n", - " 23-EL-9703 name='VFD 1st Stage Compressor'\n", - " 23-IT-8302 name='PA/GA System Process Area'\n", - " 23-ME-9802 name='Turbine Hall Overhead Crane 5T'\n", - " 23-EN-8001 name='Electrical Equipment Room'\n", - " 23-EN-8002 name='Instrument Equipment Room'\n", - " 23-IF-8201 name='Platform Main Deck'\n", - " 23-IF-8202 name='Module Support Structure'\n", - " 23-MI-8402 name='Scaffolding Kit A'\n", - " 23-EL-9702 name='UPS System Process Hall'\n", - " 23-DR-9901 name='Drilling Derrick Assembly'\n", - " 23-HS-8103 name='Gas Detection System'\n", - " 23-IT-8301 name='Network Switch Cabinet A'\n", - " 23-MI-8401 name='Lifting Sling Assembly'\n", - " 23-PA-9202 name='Chemical Injection Pump MEG'\n", - " 23-IF-8203 name='Helideck'\n", - " 23-ME-9801 name='Process Hall Overhead Crane 10T'\n", - " 23-HS-8101 name='Deluge Fire Protection Station A'\n", - " 23-HS-8102 name='Emergency Shower Station'\n", - " 23-TL-8601 name='Hydraulic Torque Wrench 3/4in'\n", - " 230900 name='230900'\n", - "equipment (count=20):\n", - " ab0ea3c4-b606-4e41-bad9-2ad0fb432c41 name='PH 1st Stage Gas Compressor'\n", - " cc3e885d-0b7f-4fc4-923d-510b40981e1d name='PH 2nd Stage Gas Compressor'\n", - " eff69eed-b9e9-427e-bf15-aa3cf93c43fb name='1st Stage Safety Relief Valve'\n", - " 2191ae23-2f42-4ccf-9060-29c4ddf67290 name='1st Stage Discharge Cooler'\n", - " 1b8f2e53-31aa-4eb8-b607-5383bfdd0c9f name='1st Stage Suction Pressure Transmitter'\n", - " 4ac9c8c0-1f44-4b21-bf2d-35614dcf7947 name='1st Stage Suction ESDV'\n", - " 89b47807-1a43-4f79-847e-d0633e0b7f9f name='MV Motor 1st Stage Compressor Drive'\n", - " efdeed77-abfe-4a63-a5e9-e87d874063d3 name='Subsea Control Module A'\n", - " ec68ec70-ea1c-409d-a73c-62819123eb3e name='Gas Turbine Generator A'\n", - " fe996ac6-9669-4853-a9ea-779e4ca40360 name='Seawater Lift Pump A'\n", - " EQ-VA-9301 name='1st Stage Suction ESDV'\n", - " EQ-KA-9102 name='PH 2nd Stage Gas Compressor'\n", - " EQ-PA-9201A name='Seawater Lift Pump A'\n", - " EQ-GT-9401 name='Gas Turbine Generator A'\n", - " EQ-PT-92501 name='1st Stage Suction Pressure Transmitter'\n", - " EQ-SU-8501 name='Subsea Control Module A'\n", - " EQ-EL-9701 name='MV Motor 1st Stage Compressor Drive'\n", - " EQ-KA-9101 name='PH 1st Stage Gas Compressor'\n", - " EQ-PSV-92550 name='1st Stage Safety Relief Valve'\n", - " EQ-EA-9501 name='1st Stage Discharge Cooler'\n" - ] - } - ], - "source": [ - "query = Query(\n", - " with_={\n", - " \"asset\": NodeResultSetExpression(\n", - " # Tags whose PARENT TAG has 'functional-location' in its tags property.\n", - " # Why parent? Nested can only filter through single-valued direct relations.\n", - " # On Tag, `parent` is the only single DR to another Tag.\n", - " filter=Nested(\n", - " scope=asset_vid.as_property_ref(\"parent\"),\n", - " filter=ContainsAll(\n", - " property=asset_vid.as_property_ref(\"tags\"),\n", - " values=[\"functional-location\"],\n", - " ),\n", - " ),\n", - " limit=500,\n", - " ),\n", - " \"equipment\": NodeResultSetExpression(\n", - " # FROM all Equipment WHERE asset (a direct relation to a Tag) has sourceContext == \"cfihos_test\"\n", - " filter=Nested(\n", - " scope=eq_vid.as_property_ref(\"asset\"),\n", - " filter=Equals(\n", - " property=asset_vid.as_property_ref(\"sourceContext\"),\n", - " value=\"cfihos_test\",\n", - " ),\n", - " ),\n", - " limit=500,\n", - " ),\n", - " },\n", - " select={\n", - " \"asset\": Select(\n", - " [SourceSelector(source=asset_vid, properties=[\"name\", \"description\", \"tags\", \"parent\"])]\n", - " ),\n", - " \"equipment\": Select(\n", - " [SourceSelector(source=eq_vid, properties=[\"name\", \"description\", \"tags\", \"asset\"])]\n", - " ),\n", - " },\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(f\"asset (count={len(res['asset'])}):\")\n", - " for n in res['asset']:\n", - " props = n.properties.get(asset_vid, {}) or {}\n", - " print(f\"ExId={n.external_id} name={props.get('name')!r}\")\n", - " print(f\"equipment (count={len(res['equipment'])}):\")\n", - " for n in res['equipment']:\n", - " props = n.properties.get(eq_vid, {}) or {}\n", - " print(f\"ExId={n.external_id} name={props.get('name')!r}\")\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a7eae73b", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "0c3b5293", - "metadata": {}, - "source": [ - "## The same query as a json object\n", - "\n", - "In some cases you may need to use a json object instead of SDK for querying" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "c75cab47", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "asset (count=0): []\n", - "equipment (count=0): []\n", - "debug: {'notices': []}\n" - ] - } - ], - "source": [ - "# JSON representation of the Nested filter query\n", - "json_query = {\n", - " \"with\": {\n", - " \"asset\": { # identifier of the item to retrieve\n", - " \"limit\": 1000, # default limit is 100\n", - " \"nodes\": { # equivalent to FROM all Nodes in the project WHERE 'parent' of instances with properties\n", - " # in the Asset view has 'tags' property with value 'Permanently Abandoned'\n", - " \"filter\": {\n", - " \"nested\": {\n", - " # Direct relation to instances with properties in Asset view through 'parent' property\n", - " \"scope\": [\n", - " asset_vid.space,\n", - " f\"{asset_vid.external_id}/{asset_vid.version}\",\n", - " \"parent\",\n", - " ],\n", - " # Filter by 'tags' property in Asset view\n", - " \"filter\": {\n", - " \"containsAll\": {\n", - " \"property\": [\n", - " asset_vid.space,\n", - " f\"{asset_vid.external_id}/{asset_vid.version}\",\n", - " \"aliases\",\n", - " ],\n", - " # Value to filter by\n", - " \"values\": [\"AC\"],\n", - " },\n", - " },\n", - " },\n", - " },\n", - " },\n", - " },\n", - " \"equipment\": {\n", - " # equivalent to FROM all Nodes in the project WHERE 'asset' of instances with properties\n", - " # in the Equipment view has a tag 'Permanently Abandoned'\n", - " \"limit\": 1000, # default limit is 100\n", - " \"nodes\": {\n", - " \"filter\": {\n", - " \"nested\": {\n", - " # Direct relation to instances with properties in Equipment view through 'asset' property\n", - " \"scope\": [\n", - " eq_vid.space,\n", - " f\"{eq_vid.external_id}/{eq_vid.version}\",\n", - " \"asset\",\n", - " ],\n", - " \"filter\": {\n", - " # Filter by 'tags' property in Equipment view\n", - " \"containsAll\": {\n", - " \"property\": [\n", - " eq_vid.space,\n", - " f\"{eq_vid.external_id}/{eq_vid.version}\",\n", - " \"tags\",\n", - " ],\n", - " \"values\": [\"Permanently Abandoned\"],\n", - " },\n", - " },\n", - " },\n", - " },\n", - " },\n", - " },\n", - " },\n", - " \"select\": {\n", - " \"asset\": {\n", - " \"sources\": [\n", - " {\n", - " \"source\": {\n", - " \"type\": \"view\",\n", - " \"space\": asset_vid.space,\n", - " \"externalId\": asset_vid.external_id,\n", - " \"version\": asset_vid.version,\n", - " },\n", - " \"properties\": [\"*\"], # All properties\n", - " },\n", - " ],\n", - " },\n", - " \"equipment\": {\n", - " \"sources\": [\n", - " {\n", - " \"source\": {\n", - " \"type\": \"view\",\n", - " \"space\": eq_vid.space,\n", - " \"externalId\": eq_vid.external_id,\n", - " \"version\": eq_vid.version,\n", - " },\n", - " \"properties\": [\"*\"], # All properties\n", - " },\n", - " ],\n", - " },\n", - " },\n", - " \"debug\": {},\n", - "}\n", - "@retry_cognite\n", - "def _post_query(payload: dict) -> dict:\n", - " \"\"\"POST the raw JSON query, raising CogniteAPIError on HTTP errors so retry can kick in.\"\"\"\n", - " response = client.post(\n", - " url=f\"/api/v1/projects/{client.config.project}/models/instances/query\",\n", - " json=payload,\n", - " )\n", - " # client.post returns a requests.Response - convert non-2xx into CogniteAPIError\n", - " if response.status_code >= 400:\n", - " try:\n", - " body = response.json()\n", - " message = body.get(\"error\", {}).get(\"message\", response.text)\n", - " except ValueError:\n", - " message = response.text\n", - " raise CogniteAPIError(message=message, code=response.status_code)\n", - " return response.json()\n", - "\n", - "\n", - "try:\n", - " body = _post_query(json_query)\n", - " assets = body[\"items\"][\"asset\"]\n", - " equipments = body[\"items\"][\"equipment\"]\n", - " print(f\"asset (count={len(assets)}): {assets}\")\n", - " print(f\"equipment (count={len(equipments)}): {equipments}\")\n", - " print(\"debug:\", body.get(\"debug\"))\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, - { - "cell_type": "markdown", - "id": "592dabf5", - "metadata": {}, - "source": [ - "# Timeseries, activities, files\n", - "## Retrive timeseries related to an asset\n", - "Activities and files can be returned the same way.\n", - "\n", - "The main problem here is that there is no way to extract assets and then use them to find the related timeseries. It is not possible because\n", - "- the properties holding node references pointing to assets are lists of direct relations\n", - "- reverse lists of direct relations cannot be queried\n", - "\n", - "If your use case requires traversing multiple nodes both ways and lists of direct relations do not fulfill the requirements - that's when you need edges. Another way is to chain the queries outside of 'query' structure (query -> get result -> use in next query)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a269d539", - "metadata": {}, - "outputs": [], - "source": [ - "# Replace external_id with a real Tag external_id from your project.\n", - "# Tip: run the list-assets cell above and copy any Tag's externalId here.\n", - "asset_id = NodeId(space=INST_SP, external_id=\"PLTF-EW1003A (Prince)-811\")\n", - "print(asset_id.dump(include_instance_type=False))\n", - "query = Query(\n", - " with_={\n", - " \"timeseries\": NodeResultSetExpression(\n", - " filter=ContainsAll(property=ts_vid.as_property_ref(\"assets\"), values={\"parameter\": \"asset\"}),\n", - " limit=500,\n", - " ),\n", - " },\n", - " select={\n", - " \"timeseries\": Select(\n", - " [\n", - " SourceSelector(\n", - " source=ts_vid,\n", - " properties=[\"name\", \"description\", \"source\", \"unit\", \"assets\", \"equipment\", \"activities\"],\n", - " ),\n", - " ],\n", - " ),\n", - " },\n", - " parameters={\"asset\": [asset_id.dump(include_instance_type=False)]},\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(res[\"timeseries\"])\n", - " print(len(res[\"timeseries\"]))\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, - { - "cell_type": "markdown", - "id": "59fa64a1", - "metadata": {}, - "source": [ - "## Retrieve activities of a timeseries and equipment related to these activities" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "79bf3bbe", - "metadata": {}, - "outputs": [], - "source": [ - "# Replace external_id with a real TimeSeriesData externalId from your project.\n", - "timeseries_id = NodeId(space=INST_SP, external_id=\"CUMULATIVE_BOE_PER_DAY_TS_6081740998\")\n", - "query = Query(\n", - " with_={\n", - " \"activities\": NodeResultSetExpression(\n", - " filter=ContainsAll(\n", - " property=wo_vid.as_property_ref(\"timeSeries\"),\n", - " values={\"parameter\": \"timeseries\"},\n", - " ),\n", - " limit=100,\n", - " ),\n", - " \"equipment_activities\": NodeResultSetExpression(\n", - " from_=\"activities\",\n", - " through=wo_vid.as_property_ref(\"equipment\"), # must be a property reference\n", - " limit=10,\n", - " ),\n", - " },\n", - " select={\n", - " \"activities\": Select(\n", - " [\n", - " SourceSelector(\n", - " source=wo_vid,\n", - " properties=[\"name\", \"description\", \"source\", \"assets\", \"equipment\"],\n", - " ),\n", - " ],\n", - " ),\n", - " \"equipment_activities\": Select(\n", - " [\n", - " SourceSelector(\n", - " source=eq_vid,\n", - " properties=[\"name\", \"description\", \"source\"],\n", - " ),\n", - " ],\n", - " ),\n", - " },\n", - " parameters={\"timeseries\": [timeseries_id.dump(include_instance_type=False)]},\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(res[\"activities\"])\n", - " print(res[\"equipment_activities\"])\n", - " print(\"returned activities:\", len(res[\"activities\"]))\n", - " print(\"returned equipment activities:\", len(res[\"equipment_activities\"]))\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)" - ] - }, - { - "cell_type": "markdown", - "id": "36d12972", - "metadata": {}, - "source": [ - "## Retrieve equipment associated with an asset\n", - "\n", - "You can retrieve equipment related to an asset through the 'asset' property in the Equipment.\n", - "This is useful when trying to get the equipment instances associated with assets of a certain type or class\n", - "or extensions of CogniteAsset with some properties.\n", - "\n", - "Not that it only works with Equipment - all other Asset entity relationships (to files, timeseries, activities)\n", - "are Reverse **Lists** of direct relations, meaning they cannot be traversed inwards. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7404618c", - "metadata": {}, - "outputs": [], - "source": [ - "# Adjust these to values that actually exist in your project. Try the \"list assets\"\n", - "# cell first to see real `tags` and the `equipmentClass` values present on Equipment.\n", - "asset_tags = [\"AC901\"]\n", - "equipment_class = \"Casing\"\n", - "\n", - "query = Query(\n", - " with_={\n", - " \"assets\": NodeResultSetExpression(\n", - " # FROM all Nodes WHERE tags contains all of asset_tags\n", - " filter=ContainsAll(property=asset_vid.as_property_ref(\"tags\"), values={\"parameter\": \"asset_tags\"}),\n", - " limit=500,\n", - " ),\n", - " \"equipment\": NodeResultSetExpression(\n", - " from_=\"assets\",\n", - " through=eq_vid.as_property_ref(\"asset\"),\n", - " direction=\"inwards\",\n", - " # Equipment has an `equipmentClass` text property in this model,\n", - " # so we filter directly instead of using a Nested filter through\n", - " # the `equipmentType` direct relation (which would require the\n", - " # cdf_cdm:CogniteEquipmentType view to be installed).\n", - " filter=Equals(\n", - " property=eq_vid.as_property_ref(\"equipmentClass\"),\n", - " value={\"parameter\": \"equipmentClass\"},\n", - " ),\n", - " limit=500,\n", - " ),\n", - " },\n", - " select={\n", - " \"assets\": Select(\n", - " [SourceSelector(source=asset_vid, properties=[\"name\", \"description\", \"tags\"])]\n", - " ),\n", - " \"equipment\": Select(\n", - " [SourceSelector(source=eq_vid, properties=[\"name\", \"description\", \"asset\", \"equipmentClass\", \"class\", \"type\"])]\n", - " ),\n", - " },\n", - " parameters={\"equipmentClass\": equipment_class, \"asset_tags\": asset_tags},\n", - ")\n", - "try:\n", - " res = run_query(client, query)\n", - " print(f\"assets (count={len(res['assets'])}): {res['assets']}\")\n", - " print(f\"equipment (count={len(res['equipment'])}): {res['equipment']}\")\n", - "except CogniteAPIError as e:\n", - " log_api_error(e)\n" - ] - }, - { - "cell_type": "markdown", - "id": "10143a85", - "metadata": {}, - "source": [ - "# Using the cursor\n", - "\n", - "For completion, the methods below can be used to paginate with the instantiated query.\n", - "\n", - "Examples of usage and considerations are TBD" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "094a330c", - "metadata": {}, - "outputs": [], - "source": [ - "# Cursor-based pagination for data model queries (inspired by the Yggdrasil team).\n", - "# Uses run_sync (retry-wrapped /sync) so transient 408/429/5xx are handled transparently.\n", - "\n", - "def get_data(\n", - " client: CogniteClient,\n", - " query: Query,\n", - " max_iterations: int | None = 100,\n", - ") -> tuple[dict[str, list[NodeListWithCursor | EdgeListWithCursor]], dict[str, str]]:\n", - " \"\"\"Cursor based pagination for data model queries.\n", - "\n", - " The query object's cursors are updated in-place so the same query can be resumed.\n", - "\n", - " Args:\n", - " client: The Cognite client to use for making the query.\n", - " query: The query to fetch data from CDF data model.\n", - " max_iterations: Maximum number of pages to fetch. Use None or -1 for no limit.\n", - "\n", - " Returns:\n", - " A tuple of (collected_data, final_cursors). final_cursors is empty when the\n", - " result set is fully drained.\n", - " \"\"\"\n", - " if any(c for c in (query.cursors or {}).values()):\n", - " print(\"Cursors already set in query, continuing retrieval.\")\n", - "\n", - " collected_data: dict[str, list] = defaultdict(list)\n", - " current_iteration = 0\n", - " if max_iterations is None or max_iterations == -1:\n", - " max_iterations = float(\"inf\")\n", - "\n", - " res = None\n", - " while current_iteration < max_iterations:\n", - " res = run_sync(client, query)\n", - "\n", - " if res is None:\n", - " if not collected_data:\n", - " print(\"No data returned, exiting loop.\")\n", - " return {}, {}\n", - " print(\"Query failed, but returning collected data so far.\")\n", - " return collected_data, {}\n", - "\n", - " # Empty page across all selections = fully drained (cursor still kept for resume).\n", - " if all(not res.data[selection] for selection in res.data):\n", - " print(\"No more data available, exiting loop.\")\n", - " return collected_data, {}\n", - "\n", - " for selection in res.data:\n", - " collected_data[selection].extend(res.data[selection])\n", - "\n", - " query.cursors = res.cursors\n", - " current_iteration += 1\n", - "\n", - " print(f\"Collected data for {current_iteration} iterations.\")\n", - " return collected_data, (res.cursors if res is not None else {})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "05fb2590", - "metadata": {}, - "outputs": [], - "source": [ - "# The retry helpers (retry_cognite, run_query, run_sync, log_api_error) are defined\n", - "# at the top of this notebook, right after client setup. Use them for any new query:\n", - "#\n", - "# try:\n", - "# res = run_query(client, query) # /query with retry\n", - "# # or\n", - "# res = run_sync(client, query) # /sync with retry (for cursor pagination)\n", - "# except CogniteAPIError as e:\n", - "# log_api_error(e)\n", - "#\n", - "# For cursor-paginated traversal of large result sets, use get_data(client, query)\n", - "# defined in the cell above - it calls run_sync internally." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.14.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file From c44274d6ffb63b55a6407fbe5e5ce829b3fdd3c7 Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Wed, 20 May 2026 08:26:53 +0530 Subject: [PATCH 17/18] cdf_common cleanup --- .../cdf_entity_matching/data_modeling/fn.Space.yaml | 3 +++ .../contextualization/cdf_entity_matching/default.config.yaml | 2 +- .../cdf_file_annotation/data_modeling/fn.Space.yaml | 3 +++ .../contextualization/cdf_file_annotation/default.config.yaml | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 modules/contextualization/cdf_entity_matching/data_modeling/fn.Space.yaml create mode 100644 modules/contextualization/cdf_file_annotation/data_modeling/fn.Space.yaml diff --git a/modules/contextualization/cdf_entity_matching/data_modeling/fn.Space.yaml b/modules/contextualization/cdf_entity_matching/data_modeling/fn.Space.yaml new file mode 100644 index 00000000..d8e09913 --- /dev/null +++ b/modules/contextualization/cdf_entity_matching/data_modeling/fn.Space.yaml @@ -0,0 +1,3 @@ +- description: Space for entity matching CDF Function code nodes + name: "{{functionSpace}}" + space: "{{functionSpace}}" diff --git a/modules/contextualization/cdf_entity_matching/default.config.yaml b/modules/contextualization/cdf_entity_matching/default.config.yaml index 86e52234..69e0493e 100644 --- a/modules/contextualization/cdf_entity_matching/default.config.yaml +++ b/modules/contextualization/cdf_entity_matching/default.config.yaml @@ -13,7 +13,7 @@ schemaSpace: sp_enterprise_process_industry viewVersion: v1 assetInstanceSpace: springfield_instances timeseriesInstanceSpace: springfield_instances -functionSpace: springfield_functions +functionSpace: sp_entity_matching_fn # space where function code nodes are stored — created by this module AssetViewExternalId: YourOrgAsset # use Asset as external Id if using QS datamodel TimeSeriesViewExternalId: YourOrgTimeSeries # use Enterprise_TimeSeries as external Id if using QS datamodel targetViewExternalId: YourOrgAsset # use Asset as external Id if using QS datamodel diff --git a/modules/contextualization/cdf_file_annotation/data_modeling/fn.Space.yaml b/modules/contextualization/cdf_file_annotation/data_modeling/fn.Space.yaml new file mode 100644 index 00000000..2e2e1370 --- /dev/null +++ b/modules/contextualization/cdf_file_annotation/data_modeling/fn.Space.yaml @@ -0,0 +1,3 @@ +- description: Space for file annotation CDF Function code nodes + name: "{{functionSpace}}" + space: "{{functionSpace}}" diff --git a/modules/contextualization/cdf_file_annotation/default.config.yaml b/modules/contextualization/cdf_file_annotation/default.config.yaml index abfcd9e5..1fb47f2f 100644 --- a/modules/contextualization/cdf_file_annotation/default.config.yaml +++ b/modules/contextualization/cdf_file_annotation/default.config.yaml @@ -31,7 +31,7 @@ targetEntityVersion: v1 # used in /functions functionClientId: ${IDP_CLIENT_ID} functionClientSecret: ${IDP_CLIENT_SECRET} -functionSpace: springfield_functions # space where function code files are stored +functionSpace: sp_file_annotation_fn # space where function code nodes are stored — created by this module # function external IDs (folder names must match these) prepareFunctionExternalId: fn_file_annotation_prepare From 57de394b3813cfa818b58061eeba58599ac80b95 Mon Sep 17 00:00:00 2001 From: Aashutosh-cognite Date: Tue, 26 May 2026 14:44:37 +0530 Subject: [PATCH 18/18] Revert modules/sourcesystem to main for contextualization-only PR PR #275 should only change cdf_file_annotation and cdf_entity_matching self-contained function spaces. Restore all foundation source-system modules to match main. Co-authored-by: Cursor --- .../cdf_opcua_foundation/README.md | 101 ++++--- .../cdf_opcua_foundation/default.config.yaml | 18 +- .../ep_opcua.ExtractionPipeline.Config.yaml | 263 +++++++++++++----- .../ep_opcua.ExtractionPipeline.yaml | 108 +++++-- .../tr_opcua_timeseries.Transformation.sql | 50 ---- .../tr_opcua_timeseries.Transformation.yaml | 14 - .../sourcesystem/cdf_pi_foundation/README.md | 96 +++---- .../cdf_pi_foundation/default.config.yaml | 13 +- .../ep_pi.ExtractionPipeline.Config.yaml | 54 ++-- .../ep_pi.ExtractionPipeline.yaml | 17 +- .../cdf_pi_foundation/raw/db_pi.Database.yaml | 1 - .../tr_pi_timeseries.Transformation.sql | 48 ---- .../tr_pi_timeseries.Transformation.yaml | 14 - .../sourcesystem/cdf_sap_foundation/README.md | 142 ++++------ .../cdf_sap_foundation/default.config.yaml | 18 +- .../ep_sap.ExtractionPipeline.Config.yaml | 13 +- .../raw/equipment.Table.yaml | 2 + .../raw/functional_location.Table.yaml | 2 + .../raw/state_store.Table.yaml | 4 + ..._sap.Database.yaml => workitem.Table.yaml} | 1 + .../raw/workorder.Table.yaml | 2 + .../raw/workpackage.Table.yaml | 2 + .../raw/worktask.Table.yaml | 2 + .../tr_sap_assets.Transformation.sql | 40 --- .../tr_sap_assets.Transformation.yaml | 14 - .../tr_sap_equipment.Transformation.sql | 22 -- .../tr_sap_equipment.Transformation.yaml | 14 - ..._sap_equipment_to_asset.Transformation.sql | 23 -- ...sap_equipment_to_asset.Transformation.yaml | 14 - ..._sap_maintenance_orders.Transformation.sql | 33 --- ...sap_maintenance_orders.Transformation.yaml | 14 - ..._sap_operation_to_order.Transformation.sql | 39 --- ...sap_operation_to_order.Transformation.yaml | 14 - .../tr_sap_operations.Transformation.sql | 35 --- .../tr_sap_operations.Transformation.yaml | 14 - 35 files changed, 468 insertions(+), 793 deletions(-) delete mode 100644 modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql delete mode 100644 modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml delete mode 100644 modules/sourcesystem/cdf_pi_foundation/raw/db_pi.Database.yaml delete mode 100644 modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.sql delete mode 100644 modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/equipment.Table.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/functional_location.Table.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/state_store.Table.yaml rename modules/sourcesystem/cdf_sap_foundation/raw/{db_sap.Database.yaml => workitem.Table.yaml} (60%) create mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/workorder.Table.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/workpackage.Table.yaml create mode 100644 modules/sourcesystem/cdf_sap_foundation/raw/worktask.Table.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.sql delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.sql delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.sql delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.sql delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.sql delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.yaml delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.sql delete mode 100644 modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.yaml diff --git a/modules/sourcesystem/cdf_opcua_foundation/README.md b/modules/sourcesystem/cdf_opcua_foundation/README.md index b1450729..ac87b6a1 100644 --- a/modules/sourcesystem/cdf_opcua_foundation/README.md +++ b/modules/sourcesystem/cdf_opcua_foundation/README.md @@ -1,8 +1,7 @@ # OPC-UA Foundation Module -This module ingests OPC-UA node metadata from an OPC-UA server into CDF RAW, then transforms it into `ISATimeSeries` data model instances in the ISA Manufacturing Extension. OPC-UA timeseries values (measurements) are written directly to CDF by the OPC-UA Extractor — RAW is used for node metadata (name, description, data type) to ensure consistency with PI and SAP modules and to provide an audit trail. +This module ingests OPC-UA node metadata, references, and subscription state into CDF RAW. OPC-UA timeseries values (measurements) are written directly to CDF by the OPC-UA Extractor — RAW is used for node metadata (name, description, data type), reference structure, and extractor browse/state caches to provide an audit trail and enable downstream contextualization. Transformations from RAW into the ISA Manufacturing Extension data model are not shipped here; author them downstream as needed. -The extractor configuration template is sourced from `gss-knowledge-base` and includes all required parameters with documentation. > **Node filters must be configured before production use.** Without filters the extractor browses the full OPC-UA server tree, which may be very large and slow. See the extractor config for commented-out examples. @@ -11,17 +10,19 @@ The extractor configuration template is sourced from `gss-knowledge-base` and in ``` cdf_opcua_foundation/ ├── extraction_pipelines/ -│ ├── ep_opcua.ExtractionPipeline.yaml # Pipeline definition with RAW table reference +│ ├── ep_opcua.ExtractionPipeline.yaml # Pipeline definition with RAW table references │ └── ep_opcua.ExtractionPipeline.Config.yaml # Full OPC-UA Extractor config template ├── raw/ │ └── db_opcua.Database.yaml # db_{{location}}_opcua -├── transformations/ -│ ├── tr_opcua_timeseries.Transformation.yaml # Targets ISATimeSeries view -│ └── tr_opcua_timeseries.Transformation.sql # Scaffold SQL — adapt before production use ├── default.config.yaml └── module.toml ``` +> **Note:** This foundation module ingests OPC-UA data into RAW (and Asset/TS +> directly). Transformations from RAW into the ISA Manufacturing Extension data +> model are not yet shipped with this module — see +> `.cursor/rules/cdf-transformations.mdc` for guidance on authoring them. + ## Data Flow ``` @@ -30,15 +31,12 @@ OPC-UA Server ▼ OPC-UA Extractor │ - ├── Timeseries values ──────────────────► CDF Timeseries (direct write) - │ - └── Node metadata (name, desc, type) ──► RAW: db_{{location}}_opcua.nodes - │ - ▼ - Transformation: tr_{{location}}_opcua_timeseries - │ - ▼ - ISATimeSeries DM instances in {{instanceSpace}} + ├── Variable values ──────────► CDF Timeseries (direct write) + ├── Object nodes ──────────► RAW: assets + ├── Variable nodes ──────────► RAW: timeseries + ├── References ──────────► RAW: relationships + ├── Browse cache ──────────► RAW: known_objects, known_references, known_variables + └── Subscription state ────────► RAW: state-store-variables ``` ## Resources Created @@ -46,27 +44,24 @@ OPC-UA Extractor | Resource | External ID | Purpose | |---|---|---| | ExtractionPipeline | `ep_{{location}}_opcua` | Pipeline health tracking and config delivery | -| RAW Database | `db_{{location}}_opcua` | OPC-UA node metadata landing zone | -| Transformation | `tr_{{location}}_opcua_timeseries` | RAW metadata → ISATimeSeries DM instances | +| RAW Database | `db_{{location}}_opcua` | OPC-UA node metadata + state landing zone | ## Configuration +All variables are declared locally in `default.config.yaml` (no inheritance): + ```yaml variables: modules: cdf_opcua_foundation: - location: "site1" - instanceSpace: "sp_isa_instance_space" - schemaSpace: "sp_isa_manufacturing" - dataModelVersion: "v1" - dataset: "ds_opcua" - opcuaIdPrefix: "opcua:" - opcuaPublishingInterval: 5000 - opcuaSamplingInterval: 5000 - populateSysTagsFound: true - integration_owner_name: "Integration Owner" + location: "site1" # Site code, used in externalIds (ep__opcua, db__opcua) + instanceSpace: "sp_instances" # DM space for ISATimeSeries / CogniteTimeSeries instances + dataset: "ds_opcua" # dataSetExternalId for the pipeline and RAW database + + integration_owner_name: "Integration Owner" # Technical contact for the pipeline integration_owner_email: "integration.owner@example.com" - data_owner_name: "Data Owner" + + data_owner_name: "Data Owner" # Business contact for the data data_owner_email: "data.owner@example.com" ``` @@ -81,27 +76,42 @@ Set these on the host running the OPC-UA Extractor: | `OPCUA_PASSWORD` | OPC-UA server password | | `CDF_PROJECT` | CDF project name | | `CDF_URL` | CDF base URL (e.g. `https://api.cognitedata.com`) | -| `IDP_TENANT_ID` | IdP tenant ID | +| `IDP_TENANT_ID` | IDP tenant ID | | `IDP_CLIENT_ID` | Service account client ID | | `IDP_CLIENT_SECRET` | Service account client secret | ## Verify Before Deploy -1. **Node filters** — configure `extraction.transformations` in `ep_opcua.ExtractionPipeline.Config.yaml` before production. -2. **Endpoint URL** — set `OPCUA_ENDPOINT_URL` to your server's address. -3. **Certificates** — for production, set `auto-accept: false` and configure certificate storage per OPC-UA extractor docs. - -## Transformation SQL — Important Note - -`tr_opcua_timeseries.Transformation.sql` is a **generalized scaffold**. Column names (`Id`, `DisplayName`, `Description`, `DataType`, `NodeClass`) reflect the default OPC-UA Extractor RAW schema when `store-raw-metadata: true` is set. Preview against your actual RAW data before production use. See `.cursor/rules/cdf-transformations.mdc` for AI-assisted adaptation guidance. +OPC-UA node structure is highly site-specific. The extractor config ships with +sensible defaults but several aspects must be configured before production use: + +1. **Node filters** — without filters the extractor browses the entire server + tree, which can be very large on industrial OPC-UA servers. Obtain the + namespace and node IDs from the site OPC-UA administrator (or browse with a + tool like UA Expert), then uncomment and adapt the + `extraction.transformations` block in + `ep_opcua.ExtractionPipeline.Config.yaml`. Start with `Include` rules for + the Object nodes that contain your data, then `Include` the Variable nodes + you need. +2. **Endpoint URLs** — the documentation block in + `ep_opcua.ExtractionPipeline.yaml` lists primary/secondary endpoints as + examples; replace with the actual server addresses for your site. +3. **Certificate storage** — by default the OPC-UA extractor stores + certificates in the OS user store. For service-account deployments, edit + `config/opc.ua.net.extractor.Config.xml` to point at a known directory (see + the install instructions in `ep_opcua.ExtractionPipeline.yaml`). + +See `.cursor/rules/cdf-transformations.mdc` for AI-assisted guidance when +authoring the downstream transformations into ISA Manufacturing Extension. ## Getting Started ### Prerequisites -- `models/isa_manufacturing_extension` deployed +- `models/isa_manufacturing_extension` deployed (downstream target) - OPC-UA Extractor installed and network-accessible to the OPC-UA server -- Extractor service account with read/write to `db_{{location}}_opcua` and the `{{dataset}}` data set +- Extractor service account with read/write to the `db_{{location}}_opcua` RAW + database and read access to the `{{dataset}}` data set - Node filters configured in the extractor config ### Deploy @@ -112,20 +122,7 @@ cdf deploy modules/sourcesystem/cdf_opcua_foundation --env your-environment ### Configure and run the extractor -Set environment variables on the extractor host and start the extractor — it pulls config from `ep_{{location}}_opcua` automatically. - -### Run the transformation - -```bash -cdf transformations run tr_{{location}}_opcua_timeseries --env your-environment -``` - -### Verify - -Check that `ISATimeSeries` instances appear in `{{instanceSpace}}` in CDF Data Explorer. +The extractor config is delivered via the `ep_{{location}}_opcua` extraction pipeline in CDF. Set the environment variables on the extractor host and start the extractor — it will pull its config from CDF automatically. -## Dependencies -**Depends on**: `models/isa_manufacturing_extension` -**Used by**: `foundation/cdf_ingestion_foundation` (references `tr_{{location}}_opcua_timeseries` in the ingestion workflow) diff --git a/modules/sourcesystem/cdf_opcua_foundation/default.config.yaml b/modules/sourcesystem/cdf_opcua_foundation/default.config.yaml index 913f52e4..1fccc5af 100644 --- a/modules/sourcesystem/cdf_opcua_foundation/default.config.yaml +++ b/modules/sourcesystem/cdf_opcua_foundation/default.config.yaml @@ -3,28 +3,12 @@ # Site/location code, used in externalIds (e.g. ep_{{location}}_opcua, db_{{location}}_opcua) location: "site1" -# DM space where ISATimeSeries instances are written +# DM space where ISATimeSeries / CogniteTimeSeries instances are written instanceSpace: "sp_isa_instance_space" -# Schema space for ISA Manufacturing Extension views (used by transformations) -schemaSpace: "sp_isa_manufacturing" - -# Data model view version -dataModelVersion: "v1" - # dataSetExternalId for the extraction pipeline and RAW database dataset: "ds_opcua" -# External ID prefix for all OPC-UA node timeseries instances -opcuaIdPrefix: "opcua:" - -# OPC-UA subscription settings (milliseconds) -opcuaPublishingInterval: 5000 -opcuaSamplingInterval: 5000 - -# Set to false to omit sysTagsFound population (used by downstream SQL contextualization) -populateSysTagsFound: true - # Integration owner (technical contact for the pipeline) integration_owner_name: "Integration Owner" integration_owner_email: "integration.owner@example.com" diff --git a/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.Config.yaml b/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.Config.yaml index 8bbafdad..7260eb50 100644 --- a/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.Config.yaml +++ b/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.Config.yaml @@ -1,85 +1,198 @@ externalId: "ep_{{location}}_opcua" dataSetExternalId: "{{dataset}}" - config: - # OPC-UA Extractor configuration template - # Source: gss-knowledge-base/extractors/toolkit_examples/opcua_extractor_speira_quickstart - # - # Environment variables required on the extractor host (local config.yml): - # CDF_PROJECT, CDF_URL, IDP_TENANT_ID, IDP_CLIENT_ID, IDP_CLIENT_SECRET - # OPCUA_ENDPOINT_URL — e.g. opc.tcp://192.168.1.10:4840 - # OPCUA_USER — OPC-UA server username (omit if anonymous) - # OPCUA_PASSWORD — OPC-UA server password - version: 1 - - logger: - console: - level: information - file: - level: information - path: "logs/log.log" - retention-limit: 31 - rolling-interval: day - - extraction: - # External ID prefix — all OPC-UA nodes will be created as "opcua:" in CDF - id-prefix: "{{opcuaIdPrefix}}" - - status-codes: - status-codes-to-ingest: GoodOnly - ingest-status-codes: false - - # Write node metadata to RAW for transformation into ISATimeSeries DM instances - raw: - database: "db_{{location}}_opcua" - table: nodes - store-raw-metadata: true - - data-set: - external-id: "{{dataset}}" - source: - endpoint-url: ${OPCUA_ENDPOINT_URL} + # Primary OPC-UA server endpoint. Replace host/port with your server. + endpoint-url: opc.tcp://opcua-server-primary.example.com:4840 # TODO: Update with actual endpoint + # Optional redundant endpoints — used when the primary becomes unavailable + # or when monitor-service-level switches to a healthier server. + alt-endpoint-urls: + - opc.tcp://opcua-server-secondary.example.com:4840 # TODO: Update with actual secondary endpoint + redundancy: + service-level-threshold: 200 + reconnect-interval: 10m + monitor-service-level: true + # Service account on the OPC-UA server with read access. username: ${OPCUA_USER} password: ${OPCUA_PASSWORD} - # Accept server certificate automatically (set to false and configure certificates for production) - auto-accept: true + secure: true + auto-accept: false + publishing-interval: 500 + browse-nodes-chunk: 1000 + browse-chunk: 1000 + subscription-chunk: 500 + attributes-chunk: 5000 + keep-alive-interval: 60000 browse-throttling: - max-per-minute: 200 - max-parallelism: 3 - + max-per-minute: 60 + max-parallelism: 1 + max-node-parallelism: 0 + retries: + timeout: 0 + max-tries: 10 + max-delay: 20s + initial-delay: 2s + retry-status-codes: + - 2150694912 + - 2148007936 + - 2150105088 + - 2156199936 + extraction: + # Prefix used for all CDF externalIds created from OPC-UA nodes. + id-prefix: "opcua_{{location}}_" + # Map verbose OPC-UA namespace URIs to short prefixes used in node IDs. + # Replace the example URIs with the namespaces exposed by your server. + namespace-map: + http://opcfoundation.org/UA/: 'base:' + http://www.example.com/: 'c:' + http://www.example.com/{{location}}: '{{location}}:' + http://www.example.com/{{location}}2: '{{location}}2:' + http://www.OPCFoundation.org/UA/2013/01/ISA95: 'isa95:' + # Root node to start browsing from. Adjust namespace and node-id to your server. + root-node: + namespace-uri: "http://www.example.com/Site1" + node-id: "s=Site1.Root" + update: + objects: + name: true + description: true + context: true + metadata: true + variables: + name: true + description: true + context: true + metadata: true + deletes: + enabled: true + delete-marker: "deleted" + status-codes: + status-codes-to-ingest: All + ingest-status-codes: true + data-types: + allow-string-variables: true + auto-identify-types: true + data-type-metadata: true + expand-node-ids: true + append-internal-values: true + node-types: + metadata: true + # Re-browse the server tree daily at 22:10 to pick up new/removed nodes. + auto-rebrowse-period: 10 22 * * * subscriptions: - publishing-interval: {{opcuaPublishingInterval}} - sampling-interval: {{opcuaSamplingInterval}} - - # IMPORTANT: Node filters MUST be configured before production use. - # Without filters the extractor browses the full OPC-UA server tree. - # - # Example (uncomment and adapt): - # extraction: - # transformations: - # - type: Include - # filter: - # node-class: Object - # name: - # - "Objects" - # - "Site_Area_1" - # - type: Include - # filter: - # node-class: Variable - # name: - # - "Temperature_Tag_1" - # - type: Ignore - # filter: - # node-class: Variable - # name: - # - "InternalDiagnostic_*" + sampling-interval: 0 + queue-length: 20 + data-points: true + events: true + log-bad-values: true + data-change-filter: + trigger: "StatusValueTimestamp" + events: + enabled: true + history: true + discover-emitters: false + read-server: false + # Emit events from the server root node. Replace with site-specific emitter + # node IDs if your server exposes dedicated event sources. + emitter-ids: + - namespace-uri: "http://www.example.com/Site1" + node-id: "i=0" + historizing-emitter-ids: + - namespace-uri: "http://www.example.com/Site1" + node-id: "i=0" + history: + error-threshold: 100 + enabled: true + restart-period: 0 */6 * * * + data: true + backfill: false + data-chunk: 1000 + data-nodes-chunk: 1000 + event-chunk: 0 + event-nodes-chunk: 10 + start-time: 30d-ago + end-time: 1d + throttling: + max-per-minute: 8000 + max-parallelism: 1 + max-node-parallelism: 0 + state-storage: + location: 'db_{{location}}_opcua' + database: Raw + variable-store: state-store-variables + event-store: state-store-events + interval: 10 + cognite: + cdf-throttling: + time-series: 5 + assets: 10 + # Tune these down from defaults if you see HTTP 429 responses from CDF. + data-points: 5 + raw: 5 + ranges: 10 + events: 1 + cdf-retries: + max-retries: 10 + max-delay: 20000 + cdf-chunking: + time-series: 500 + assets: 500 + data-point-time-series: 5000 + data-point-delete: 5000 + data-point-list: 50 + data-points: 50000 + raw-rows: 5000 + events: 500 + sdk-logging: + disable: false + level: information + read-extracted-ranges: true + data-set: + external-id: '{{dataset}}' + metadata-targets: + clean: + assets: true + timeseries: true + relationships: true + space: '{{instanceSpace}}' + source: "OPCUA" - # History backfill (disabled by default — enable for initial data load) - # history: - # enabled: true - # start-time: "2024-01-01T00:00:00Z" - # throttling: - # max-per-minute: 200 - # max-parallelism: 3 + raw: + database: 'db_{{location}}_opcua' + assets-table: 'assets' + timeseries-table: 'timeseries' + relationships-table: 'relationships' + raw-node-buffer: + enable: true + database: 'db_{{location}}_opcua' + assets-table: 'assets' + timeseries-table: 'timeseries' + browse-on-empty: true + metadata-mapping: + timeseries: + "EngineeringUnits": "unit" + logger: + console: + level: debug + file: + level: information + path: logs/opcua_log.txt + retention-limit: 336 + rolling-interval: hour + ua-trace-level: info + trace-listener: + level: info + failure-buffer: + enabled: true + datapoint-path: buffer.bin + event-path: "buffer-events.bin" + # 10 GB local buffer for datapoints + events when CDF is unreachable. + max-buffer-size: 10000000000 + metrics: + # Optional Prometheus push-gateway for extractor metrics. + push-gateways: + - host: https://opcua-pushgw.example.com/ + job: '{{prometheus-job-name}}' + username: ${PROMETHEUS_USER} + password: ${PROMETHEUS_PASSWORD} \ No newline at end of file diff --git a/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.yaml b/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.yaml index 1e5776bf..58b432cb 100644 --- a/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.yaml +++ b/modules/sourcesystem/cdf_opcua_foundation/extraction_pipelines/ep_opcua.ExtractionPipeline.yaml @@ -1,24 +1,40 @@ externalId: "ep_{{location}}_opcua" name: "ep:{{location}}:opcua" dataSetExternalId: "{{dataset}}" -description: "OPC-UA Extractor pipeline for site {{location}} — writes node metadata to RAW for transformation into ISATimeSeries DM instances" +description: "OPC-UA Extractor pipeline for site {{location}} — reads node hierarchy and Variable subscriptions, writes timeseries values directly to CDF and node metadata + browse/state caches to RAW" +# RAW tables used by the OPC-UA extractor for staging and state storage. +# These names align with the database/table references in +# ep_opcua.ExtractionPipeline.Config.yaml (raw-node-buffer, metadata-targets.raw, +# and state-storage). Update the suffix per site if you run multiple pipelines. rawTables: - - dbName: "db_{{location}}_opcua" - tableName: "nodes" +- dbName: 'db_{{location}}_opcua' + tableName: assets +- dbName: 'db_{{location}}_opcua' + tableName: timeseries +- dbName: 'db_{{location}}_opcua' + tableName: relationships +- dbName: 'db_{{location}}_opcua' + tableName: known_objects +- dbName: 'db_{{location}}_opcua' + tableName: known_references +- dbName: 'db_{{location}}_opcua' + tableName: known_variables +- dbName: 'db_{{location}}_opcua' + tableName: state-store-variables schedule: Continuous contacts: - - name: {{integration_owner_name}} - email: {{integration_owner_email}} - role: Owner - sendNotification: true - - name: Cognite Support - email: support@cognite.com - role: Operational Owner - sendNotification: true - - name: {{data_owner_name}} - email: {{data_owner_email}} - role: Data Owner - sendNotification: true +- name: {{integration_owner_name}} + email: {{integration_owner_email}} + role: Owner + sendNotification: true +- name: Cognite Support + email: support@cognite.com + role: Operational Owner + sendNotification: true +- name: {{data_owner_name}} + email: {{data_owner_email}} + role: Data Owner + sendNotification: true notificationConfig: # OPC-UA extractor streams continuously; alert if not seen for >30 minutes allowedNotSeenRangeInMinutes: 30 @@ -27,17 +43,15 @@ createdBy: cognite-toolkit documentation: | ## OPC-UA extraction pipeline - This extraction pipeline reads data from an OPC-UA server. The OPC-UA Extractor - writes timeseries values directly to CDF and node metadata (name, description, - data type) to RAW table `db_{{location}}_opcua.nodes`. The transformation - `tr_{{location}}_opcua_timeseries` maps that metadata to **ISATimeSeries** view - instances in `{{instanceSpace}}`. + This extraction pipeline reads data from an OPC-UA server and writes Assets, + Timeseries, Events, and Relationships to CDF. The runtime configuration lives + in `ep_opcua.ExtractionPipeline.Config.yaml` and is fetched by the extractor + using its `pipeline-id`. - The runtime configuration lives in `ep_opcua.ExtractionPipeline.Config.yaml` and - is fetched by the extractor using its `pipeline-id`. + ### Endpoints (example — replace with your server addresses) - **Configure node filters before production use.** Without filters the extractor - browses the full OPC-UA server tree, which may be very large and slow. + * Primary : `opc.tcp://opcua-server-primary.example.com:4840` + * Secondary: `opc.tcp://opcua-server-secondary.example.com:4840` ### Required environment variables on the extractor host @@ -48,15 +62,19 @@ documentation: | | `IDP_TENANT_ID` | IdP tenant ID | | `IDP_CLIENT_ID` | Service account client ID | | `IDP_CLIENT_SECRET` | Service account client secret | - | `OPCUA_ENDPOINT_URL` | OPC-UA server URL (e.g. opc.tcp://host:4840) | | `OPCUA_USER` | OPC-UA server username (omit if anonymous) | | `OPCUA_PASSWORD` | OPC-UA server password | + | `PROMETHEUS_USER` | (optional) Push-gateway username | + | `PROMETHEUS_PASSWORD` | (optional) Push-gateway password | ### Install the OPC-UA extractor 1. **Download the installer** from Cognite Hub or Fusion (Extractors page). - 2. **Install on the extractor host** and register as a service. - 3. **Point the extractor at this pipeline** with a minimal local `config.yml`: + 2. **Install on the extractor host**, e.g. `C:\Cognite\OPCUA\` on Windows or + `/opt/cognite/opcua/` on Linux. Follow the README that ships with the + installer to create a service. + 3. **Point the extractor at this pipeline** by giving it a minimal local + `config.yml` containing only credentials and the pipeline ID: ```yaml version: 1 @@ -74,6 +92,42 @@ documentation: | pipeline-id: ep_{{location}}_opcua ``` + The full runtime configuration (source, extraction filters, history, + subscriptions, throttling, RAW targets, metrics, …) is delivered from this + extraction pipeline's remote config. + + 4. **Configure certificate storage** by editing + `config/opc.ua.net.extractor.Config.xml` so certificates are stored in a + known directory rather than the OS user store: + + ```xml + + Directory + ./certificates/pki/app + CN=Opcua-extractor, C=NO, S=Oslo, O=Cognite, DC=localhost + + ``` + + ### RAW tables written by this pipeline + + | Table | Purpose | + | ------------------------ | ---------------------------------------------------------- | + | `assets` | Asset rows staged from OPC-UA Object nodes | + | `timeseries` | Timeseries rows staged from OPC-UA Variable nodes | + | `relationships` | Relationship rows derived from OPC-UA references | + | `known_objects` | Browse cache of seen Object nodes | + | `known_references` | Browse cache of seen References | + | `known_variables` | Browse cache of seen Variable nodes | + | `state-store-variables` | Extractor state for variable subscriptions / history | + | `state-store-events` | Extractor state for event subscriptions / history | + + ### Browse / rebrowse behaviour + + * **Time-based rebrowse:** daily (configured via `auto-rebrowse-period` + in the runtime config). + * **Event-based rebrowse:** triggered by changes to *NamespacePublicationDate* + (where supported by the server). + ### References * OPC-UA extractor docs: diff --git a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql deleted file mode 100644 index c8eed049..00000000 --- a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.sql +++ /dev/null @@ -1,50 +0,0 @@ --- Transformation: OPC-UA node metadata → ISATimeSeries DM instances --- Target view : ISATimeSeries (space: {{schemaSpace}}, version: {{dataModelVersion}}) --- Source RAW : db_{{location}}_opcua.nodes --- --- SCAFFOLD — column names reflect the default OPC-UA Extractor RAW schema when --- store-raw-metadata: true is set. OPC-UA node structure is highly site-specific; --- verify column names against your actual RAW table before running in production. --- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. --- --- Default OPC-UA Extractor RAW columns (verify for your extractor version): --- Id — OPC-UA node ID string (e.g. "ns=2;s=Temperature.Tag1") --- DisplayName — Human-readable node name --- Description — Node description (may be empty) --- DataType — OPC-UA data type (e.g. "Double", "Float", "Int32") --- NodeClass — "Variable" for measurement nodes - -SELECT - -- Identity: use the extractor-assigned externalId (id-prefix + node id) - concat('{{opcuaIdPrefix}}', Id) AS externalId, - '{{instanceSpace}}' AS space, - - -- Core metadata - DisplayName AS name, - Description AS description, - - -- Map OPC-UA DataType to CDF timeseries type - case - when lower(DataType) in ('boolean') then 'string' - when lower(DataType) in ('string', 'localizedtext') then 'string' - else 'numeric' - end AS type, - false AS isStep, - - -- Source context label - 'OPC-UA' AS sourceContext, - - -- sysTagsFound: array of candidate tag identifiers for downstream SQL contextualization. - -- The pattern below extracts the last segment of the OPC-UA display name, which often - -- corresponds to a functional location or equipment tag. Adapt to your site's node naming. - -- Set populateSysTagsFound: false in default.config.yaml to omit this field entirely. - case - when '{{populateSysTagsFound}}' = 'true' - then array( - regexp_extract(DisplayName, '[^._\\-]+$', 0) -- last segment after '.', '_', or '-' - ) - else array() - end AS sysTagsFound - -FROM `db_{{location}}_opcua`.`nodes` -WHERE NodeClass = 'Variable' -- only ingest measurement nodes, not object/folder nodes diff --git a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml b/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml deleted file mode 100644 index 7efac67b..00000000 --- a/modules/sourcesystem/cdf_opcua_foundation/transformations/tr_opcua_timeseries.Transformation.yaml +++ /dev/null @@ -1,14 +0,0 @@ -externalId: "tr_{{location}}_opcua_timeseries" -name: "tr:{{location}}:opcua:timeseries" -dataSetExternalId: "{{dataset}}" -destination: - type: instances - dataModel: - space: "{{schemaSpace}}" - externalId: ISATimeSeries - version: "{{dataModelVersion}}" - destinationType: ISATimeSeries - instanceSpace: "{{instanceSpace}}" -ignoreNullFields: true -isPublic: true -conflictMode: upsert diff --git a/modules/sourcesystem/cdf_pi_foundation/README.md b/modules/sourcesystem/cdf_pi_foundation/README.md index 67f27d59..0c9fff0b 100644 --- a/modules/sourcesystem/cdf_pi_foundation/README.md +++ b/modules/sourcesystem/cdf_pi_foundation/README.md @@ -1,21 +1,14 @@ # PI Foundation Module -This module ingests PI tag metadata from an OSIsoft/AVEVA PI Data Archive into CDF RAW, then transforms it into `ISATimeSeries` data model instances in the ISA Manufacturing Extension. PI timeseries values (measurements) are written directly to CDF by the PI .NET Extractor — RAW is used only for tag metadata (name, description, unit, engineering range). - -The extractor configuration template is sourced from `gss-knowledge-base` and includes all required parameters with documentation. +This module ingests PI tags and tag values from an OSIsoft/AVEVA PI Data Archive directly into the Core Data Model `ExtractorTimeSeries` view in `{{instanceSpace}}`, via the Cognite **PI .NET Extractor** (Windows-only). The extractor's `time-series.space-id` setting (in `ep_pi.ExtractionPipeline.Config.yaml`) enables the CDM destination — there is **no RAW staging** and no separate transformation step. Tag metadata (`name`, `description`, `unit`) lands as fields on the `ExtractorTimeSeries` instances. ## Module Architecture ``` cdf_pi_foundation/ ├── extraction_pipelines/ -│ ├── ep_pi.ExtractionPipeline.yaml # Pipeline definition with RAW table reference -│ └── ep_pi.ExtractionPipeline.Config.yaml # Full PI .NET Extractor config template -├── raw/ -│ └── db_pi.Database.yaml # db_{{location}}_pi -├── transformations/ -│ ├── tr_pi_timeseries.Transformation.yaml # Targets ISATimeSeries view -│ └── tr_pi_timeseries.Transformation.sql # Scaffold SQL — adapt before production use +│ ├── ep_pi.ExtractionPipeline.yaml # Pipeline definition (contacts, schedule, source) +│ └── ep_pi.ExtractionPipeline.Config.yaml # Full PI .NET Extractor config template (CDM destination) ├── default.config.yaml └── module.toml ``` @@ -25,18 +18,11 @@ cdf_pi_foundation/ ``` PI Data Archive │ - ▼ -PI .NET Extractor - │ - ├── Timeseries values ──────────────────► CDF Timeseries (direct write) + ▼ (PI SDK / PI Web API) +PI .NET Extractor (time-series.space-id: {{instanceSpace}}) │ - └── Tag metadata (name, unit, desc) ───► RAW: db_{{location}}_pi.timeseries_metadata - │ - ▼ - Transformation: tr_{{location}}_pi_timeseries - │ - ▼ - ISATimeSeries DM instances in {{instanceSpace}} + └── Tags + values ──────────► CDM ExtractorTimeSeries instances in {{instanceSpace}} + (externalId = "{{piIdPrefix}}") ``` ## Resources Created @@ -44,25 +30,24 @@ PI .NET Extractor | Resource | External ID | Purpose | |---|---|---| | ExtractionPipeline | `ep_{{location}}_pi` | Pipeline health tracking and config delivery | -| RAW Database | `db_{{location}}_pi` | PI tag metadata landing zone | -| Transformation | `tr_{{location}}_pi_timeseries` | RAW metadata → ISATimeSeries DM instances | ## Configuration +All variables are declared locally in `default.config.yaml` (no inheritance): + ```yaml variables: modules: cdf_pi_foundation: - location: "site1" - instanceSpace: "sp_isa_instance_space" - schemaSpace: "sp_isa_manufacturing" - dataModelVersion: "v1" - dataset: "ds_pi" - piIdPrefix: "pi:" - populateSysTagsFound: true - integration_owner_name: "Integration Owner" + location: "site1" # Site code, used in externalIds (ep__pi) + instanceSpace: "sp_instances" # DM space where ExtractorTimeSeries instances are written + dataset: "ds_pi" # dataSetExternalId for the pipeline + piIdPrefix: "pi:" # External ID prefix for all PI tag timeseries + + integration_owner_name: "Integration Owner" # Technical contact for the pipeline integration_owner_email: "integration.owner@example.com" - data_owner_name: "Data Owner" + + data_owner_name: "Data Owner" # Business contact for the data data_owner_email: "data.owner@example.com" ``` @@ -77,27 +62,38 @@ Set these on the host running the PI .NET Extractor: | `PI_PASSWORD` | PI server password | | `CDF_PROJECT` | CDF project name | | `CDF_URL` | CDF base URL (e.g. `https://api.cognitedata.com`) | -| `IDP_TENANT_ID` | IdP tenant ID | +| `IDP_TENANT_ID` | IDP tenant ID | | `IDP_CLIENT_ID` | Service account client ID | | `IDP_CLIENT_SECRET` | Service account client secret | ## Verify Before Deploy -1. **`{{instanceSpace}}` and ISA data model** — deploy `models/isa_manufacturing_extension` first. -2. **`piIdPrefix` is unique** — use different prefixes if multiple PI extractors share one project. -3. **PI Point selection** — add tag filters in `ep_pi.ExtractionPipeline.Config.yaml` on large PI servers. - -## Transformation SQL — Important Note - -`tr_pi_timeseries.Transformation.sql` is a **generalized scaffold**. Preview against your actual RAW data and adapt column names and `sysTagsFound` regex to your site's PI tag naming convention. See `.cursor/rules/cdf-transformations.mdc` for AI-assisted adaptation guidance. +Confirm the following before running the extractor in production: + +1. **DM space exists** — `{{instanceSpace}}` must already be deployed (the + extractor will not create it). Deploy whichever `models/` module owns the + space first. +2. **`ExtractorTimeSeries` view available** — this is part of the Cognite Core + Data Model (CDM v1) `ExtractorTimeSeries` extension. Confirm CDM is enabled + in your project. +3. **`piIdPrefix` is unique** — if you run multiple PI extractors against the + same CDF project, give each one a different prefix so external IDs don't + collide. +4. **PI Point selection** — the extractor browses the PI Data Archive and + subscribes to all PI Points by default. Add tag filters in + `ep_pi.ExtractionPipeline.Config.yaml` if you need to restrict the scope + (large PI servers can have hundreds of thousands of tags). ## Getting Started ### Prerequisites -- `models/isa_manufacturing_extension` deployed -- PI .NET Extractor installed on Windows with network access to the PI Data Archive and CDF -- Extractor service account with read/write to `db_{{location}}_pi` and the `{{dataset}}` data set +- DM space `{{instanceSpace}}` deployed and writable (Core Data Model with the + `ExtractorTimeSeries` extension) +- PI .NET Extractor installed on a Windows host with network access to the PI + Data Archive and to CDF +- CDF service account with write access to the `{{dataset}}` data set and write + access to `{{instanceSpace}}` for `ExtractorTimeSeries` instances ### Deploy @@ -107,20 +103,12 @@ cdf deploy modules/sourcesystem/cdf_pi_foundation --env your-environment ### Configure and run the extractor -Set environment variables on the extractor host and start the extractor — it pulls config from `ep_{{location}}_pi` automatically. - -### Run the transformation - -```bash -cdf transformations run tr_{{location}}_pi_timeseries --env your-environment -``` +The extractor config is delivered via the `ep_{{location}}_pi` extraction pipeline in CDF. Set the environment variables on the extractor host and start the extractor — it will pull its config from CDF automatically. ### Verify -Check that `ISATimeSeries` instances appear in `{{instanceSpace}}` in CDF Data Explorer. +The PI extractor writes timeseries directly to the **Core Data Model `ExtractorTimeSeries`** view in `{{instanceSpace}}` (driven by `time-series.space-id` in `ep_pi.ExtractionPipeline.Config.yaml`). Open the `ExtractorTimeSeries` view in Fusion → Data Models, filter on space `{{instanceSpace}}`, and confirm instances exist with `externalId` prefixed by `{{piIdPrefix}}` (default `pi:`) and metadata fields (`name`, `description`, `unit`) populated from the PI tags. ## Dependencies -**Depends on**: `models/isa_manufacturing_extension` - -**Used by**: `foundation/cdf_ingestion_foundation` (references `tr_{{location}}_pi_timeseries` in the ingestion workflow) +**Depends on**: A deployed DM space (`{{instanceSpace}}`) with the Core Data Model `ExtractorTimeSeries` view available diff --git a/modules/sourcesystem/cdf_pi_foundation/default.config.yaml b/modules/sourcesystem/cdf_pi_foundation/default.config.yaml index 1362d3be..beeb9032 100644 --- a/modules/sourcesystem/cdf_pi_foundation/default.config.yaml +++ b/modules/sourcesystem/cdf_pi_foundation/default.config.yaml @@ -3,24 +3,15 @@ # Site/location code, used in externalIds (e.g. ep_{{location}}_pi) location: "site1" -# DM space where ISATimeSeries instances are written +# DM space where the extractor writes ExtractorTimeSeries instances (CDM destination) instanceSpace: "sp_isa_instance_space" -# Schema space for ISA Manufacturing Extension views (used by transformations) -schemaSpace: "sp_isa_manufacturing" - -# Data model view version -dataModelVersion: "v1" - # dataSetExternalId for the extraction pipeline dataset: "ds_pi" -# External ID prefix for PI tag timeseries instances +# External ID prefix for PI tag timeseries instances (used by the extractor) piIdPrefix: "pi:" -# Set to false to omit sysTagsFound population (used by downstream SQL contextualization) -populateSysTagsFound: true - # Integration owner (technical contact for the pipeline) integration_owner_name: "Integration Owner" integration_owner_email: "integration.owner@example.com" diff --git a/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.Config.yaml b/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.Config.yaml index 1dc3182d..1201405d 100644 --- a/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.Config.yaml +++ b/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.Config.yaml @@ -1,47 +1,39 @@ externalId: "ep_{{location}}_pi" config: - # PI .NET Extractor configuration template - # Source: gss-knowledge-base/extractors/toolkit_examples/pi_net_extractor - # - # Secrets belong in environment variables on the extractor host — not in this file. - # The extractor pulls this config remotely via extraction-pipeline.external-id. + # Template for the PI Extractor configuration file. + # Fields that are commented out are optional. + # The extractor requires the configuration file to be in the config/config.yml file wrt the installation/working directory. + # In general, all secrets should be kept out of the configuration file, using references to environment variables. + # Also, don't enable default values in the configuration file, as this provides a safer upgrade path. + # Version of this configuration schema version: 1 + # Log levels: 'verbose', 'debug', 'information', 'warning', 'error', 'fatal'. logger: + # Writes log events at this level to a file. Logs will roll over to new files daily. + # If not present, or if the level is invalid, logging to file is disabled. file: level: "information" + # Path for logging output. If not present, logging to file is disabled. path: "logs/log.log" - console: - level: "warning" + # Configuration related to time series in CDF time-series: - # External ID prefix — all PI tags will be created as "pi:" in CDF - external-id-prefix: "{{piIdPrefix}}" - # Write timeseries metadata to RAW for transformation into ISATimeSeries DM instances - raw: - database: "db_{{location}}_pi" - table: "timeseries_metadata" - data-set: - external-id: "{{dataset}}" + # External Id prefix to identify time series in CDF. Leave empty for no prefix. + # The external Id in CDF is this optional prefix followed by the PI Point name or id + external-id-prefix: "pi:" + # Data modeling space id, this parameter will override data-set-id and switch the extractor destination + # from Asset-Centric model TimeSeries to Core Data Model TimeSeries with the ExtractorTimeSeries extension. + space-id: "{{instanceSpace}}" + + # Configuration related to the PI Server pi: + # PI Data Archive host server to connect to host: ${PI_HOST} + # Username to use for authentication username: ${PI_USER} - password: ${PI_PASSWORD} - - # Optional: filter which PI tags are extracted - # Uncomment and configure for your site: - # tag-filter: - # whitelist: - # - "SITE.*" - # - "TAG_PREFIX.*" - # blacklist: - # - "*.BAD" - # - "*.SHUTDOWN" - - # Optional: extraction schedule - # history: - # start-time: "2020-01-01T00:00:00Z" - # max-parallelism: 10 + # Password + password: ${PI_PASSWORD} \ No newline at end of file diff --git a/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.yaml b/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.yaml index bc1154c3..650a4377 100644 --- a/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.yaml +++ b/modules/sourcesystem/cdf_pi_foundation/extraction_pipelines/ep_pi.ExtractionPipeline.yaml @@ -1,10 +1,7 @@ externalId: "ep_{{location}}_pi" name: "ep:{{location}}:pi" dataSetExternalId: "{{dataset}}" -description: "PI .NET Extractor pipeline for site {{location}} — writes tag metadata to RAW for transformation into ISATimeSeries DM instances" -rawTables: - - dbName: "db_{{location}}_pi" - tableName: "timeseries_metadata" +description: "PI .NET Extractor pipeline for site {{location}} — writes PI tags and values directly to the Core Data Model `ExtractorTimeSeries` view in {{instanceSpace}} (no RAW staging)" source: PI schedule: Continuous contacts: @@ -28,12 +25,12 @@ documentation: | ## PI extraction pipeline This extraction pipeline reads tags and tag values from a Cognite PI .NET - Extractor and writes timeseries values directly to CDF. Tag metadata (name, - description, unit, engineering range) lands in RAW table - `db_{{location}}_pi.timeseries_metadata`. The transformation - `tr_{{location}}_pi_timeseries` maps that metadata to **ISATimeSeries** view - instances in `{{instanceSpace}}`. Timeseries external IDs are prefixed with - `{{piIdPrefix}}` (default `pi:`) followed by the PI Point name or id. + Extractor (version 2.1, config schema version 3) and writes them directly to + the **Core Data Model `ExtractorTimeSeries`** view in `{{instanceSpace}}` — + there is **no RAW staging step**. The CDM destination is enabled by setting + `time-series.space-id` in `ep_pi.ExtractionPipeline.Config.yaml`. Timeseries + external IDs are prefixed with `{{piIdPrefix}}` (default `pi:`) followed by + the PI Point name or id. The runtime configuration lives in `ep_pi.ExtractionPipeline.Config.yaml` and is fetched by the extractor using its `pipeline-id`. diff --git a/modules/sourcesystem/cdf_pi_foundation/raw/db_pi.Database.yaml b/modules/sourcesystem/cdf_pi_foundation/raw/db_pi.Database.yaml deleted file mode 100644 index d78d0126..00000000 --- a/modules/sourcesystem/cdf_pi_foundation/raw/db_pi.Database.yaml +++ /dev/null @@ -1 +0,0 @@ -dbName: "db_{{location}}_pi" diff --git a/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.sql b/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.sql deleted file mode 100644 index 11312507..00000000 --- a/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.sql +++ /dev/null @@ -1,48 +0,0 @@ --- Transformation: PI tag metadata → ISATimeSeries DM instances --- Target view : ISATimeSeries (space: {{schemaSpace}}, version: {{dataModelVersion}}) --- Source RAW : db_{{location}}_pi.timeseries_metadata --- --- SCAFFOLD — column names (name, description, unit, etc.) reflect the default PI .NET Extractor --- RAW schema. Verify against your actual RAW table before running in production. --- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. - -SELECT - -- Identity - concat('{{piIdPrefix}}', name) AS externalId, - '{{instanceSpace}}' AS space, - - -- Core metadata - name AS name, - description AS description, - 'numeric' AS type, - false AS isStep, - - -- Unit — try to resolve to CDF unit catalogue node; fall back to raw string - if( - try_get_unit(unit) IS NOT NULL, - node_reference('cdf_cdm_units', try_get_unit(unit)), - NULL - ) AS unit, - unit AS sourceUnit, - - -- Source context label - 'PI' AS sourceContext, - - -- sysTagsFound: array of candidate tag identifiers for downstream SQL contextualization. - -- The pattern below extracts the segment before the first ':' or '_' delimiter, - -- which often corresponds to a functional location or equipment tag in PI naming conventions. - -- Adapt the regexp to match your site's PI tag naming convention. - -- Set populateSysTagsFound: false in default.config.yaml to omit this field entirely. - case - when '{{populateSysTagsFound}}' = 'true' - then array( - regexp_extract( - regexp_replace(name, '^[A-Z]+_', ''), -- strip common prefixes (VAL_, AL_, etc.) - '^[^:_.]+', -- take first segment before ':', '_', or '.' - 0 - ) - ) - else array() - end AS sysTagsFound - -FROM `db_{{location}}_pi`.`timeseries_metadata` diff --git a/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.yaml b/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.yaml deleted file mode 100644 index df91b5c9..00000000 --- a/modules/sourcesystem/cdf_pi_foundation/transformations/tr_pi_timeseries.Transformation.yaml +++ /dev/null @@ -1,14 +0,0 @@ -externalId: "tr_{{location}}_pi_timeseries" -name: "tr:{{location}}:pi:timeseries" -dataSetExternalId: "{{dataset}}" -destination: - type: instances - dataModel: - space: "{{schemaSpace}}" - externalId: ISATimeSeries - version: "{{dataModelVersion}}" - destinationType: ISATimeSeries - instanceSpace: "{{instanceSpace}}" -ignoreNullFields: true -isPublic: true -conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/README.md b/modules/sourcesystem/cdf_sap_foundation/README.md index d9a2809b..28f32dde 100644 --- a/modules/sourcesystem/cdf_sap_foundation/README.md +++ b/modules/sourcesystem/cdf_sap_foundation/README.md @@ -1,10 +1,6 @@ # SAP Foundation Module -This module ingests SAP functional locations, equipment, maintenance orders, and operations into CDF RAW via a **single SAP OData extraction pipeline** with multiple entity queries, then transforms each entity type into the ISA Manufacturing Extension data model. Transformations are split by entity type and must be run in the correct order to ensure referential integrity. - -The extractor configuration template is sourced from `gss-knowledge-base` and covers all standard PM/AM entity types from SAP S/4HANA. - -> **SAP OData service names and entity keys vary across SAP versions and NW Gateway configurations.** Verify all service names and field names in the extractor config and transformation SQL against your SAP landscape before deploying. +This module ingests SAP functional locations, equipment, maintenance orders, and operations into CDF RAW via a **single SAP OData extraction pipeline** with multiple entity queries. Downstream transformations from RAW into the ISA Manufacturing Extension data model are not shipped with this module — author them as needed (one per entity type, run in dependency order to preserve referential integrity). ## Module Architecture @@ -14,14 +10,14 @@ cdf_sap_foundation/ │ ├── ep_sap.ExtractionPipeline.yaml # Single pipeline, all entity types │ └── ep_sap.ExtractionPipeline.Config.yaml # Full SAP OData extractor config template ├── raw/ -│ └── db_sap.Database.yaml # db_{{location}}_sap -├── transformations/ -│ ├── tr_sap_assets.Transformation.yaml/.sql # Functional locations → ISAAsset -│ ├── tr_sap_equipment.Transformation.yaml/.sql # Equipment → Equipment -│ ├── tr_sap_equipment_to_asset.Transformation.yaml/.sql # Equipment.asset relation -│ ├── tr_sap_maintenance_orders.Transformation.yaml/.sql # Work orders → WorkOrder -│ ├── tr_sap_operations.Transformation.yaml/.sql # Work tasks → Operation -│ └── tr_sap_operation_to_order.Transformation.yaml/.sql # Operation.workOrder relation +│ ├── db_sap.Database.yaml # db_{{location}}_sap +│ ├── functional_location.Table.yaml # SAP FunclocListSet (master, weekly) +│ ├── equipment.Table.yaml # SAP EquipmentListSet (master, weekly) +│ ├── workorder.Table.yaml # SAP ExHeaderSet (orders, daily) +│ ├── workpackage.Table.yaml # SAP ExOlistSet (order list, daily) +│ ├── worktask.Table.yaml # SAP ExOperationsSet (operations, daily) +│ ├── workitem.Table.yaml # SAP ExNotifheader (notifications, daily) +│ └── state_store.Table.yaml # Extractor state (managed by extractor) ├── default.config.yaml └── module.toml ``` @@ -34,67 +30,42 @@ SAP NW Gateway ▼ SAP OData Extractor (single pipeline, 6 entity queries) │ - ├── FunclocListSet ──► RAW: functional_location - ├── EquipmentListSet ──► RAW: equipment - ├── ExHeaderSet ──► RAW: workorder - ├── ExOlistSet ──► RAW: workpackage - ├── ExOperationsSet ──► RAW: worktask - └── ExNotifheader ──► RAW: workitem - │ - ┌─────────┴──────────┐ - ▼ (6 transformations, run in order) - ISA Manufacturing Extension DM - ├── ISAAsset instances - ├── Equipment instances - ├── Equipment.asset relation - ├── WorkOrder instances - ├── Operation instances - └── Operation.workOrder relation + ├── FunclocListSet ──► RAW: functional_location ──► ISAAsset (downstream — not shipped) + ├── EquipmentListSet ──► RAW: equipment ──► Equipment + Equipment.asset relation (downstream) + ├── ExHeaderSet ──► RAW: workorder ──► WorkOrder (downstream) + ├── ExOlistSet ──► RAW: workpackage ──► (target TBD — order line items) + ├── ExOperationsSet ──► RAW: worktask ──► Operation + Operation.workOrder relation (downstream) + └── ExNotifheader ──► RAW: workitem ──► (target TBD — notifications) + + State checkpoints ───► RAW: state_store (delta tracking, extractor-managed) ``` -## Transformation Run Order - -| Order | Transformation | Depends on | -|---|---|---| -| 1 | `tr_sap_assets` | — | -| 2 | `tr_sap_equipment` | `tr_sap_assets` | -| 3 | `tr_sap_equipment_to_asset` | `tr_sap_assets`, `tr_sap_equipment` | -| 4 | `tr_sap_maintenance_orders` | `tr_sap_assets` | -| 5 | `tr_sap_operations` | `tr_sap_maintenance_orders` | -| 6 | `tr_sap_operation_to_order` | `tr_sap_maintenance_orders`, `tr_sap_operations` | - ## Resources Created | Resource | External ID | Purpose | |---|---|---| -| ExtractionPipeline | `ep_{{location}}_sap` | Single pipeline with all SAP entity queries | -| RAW Database | `db_{{location}}_sap` | SAP data landing zone | -| Transformation | `tr_{{location}}_sap_assets` | Functional locations → ISAAsset | -| Transformation | `tr_{{location}}_sap_equipment` | Equipment master → Equipment | -| Transformation | `tr_{{location}}_sap_equipment_to_asset` | Equipment.asset relation | -| Transformation | `tr_{{location}}_sap_maintenance_orders` | Work orders → WorkOrder | -| Transformation | `tr_{{location}}_sap_operations` | Work tasks → Operation | -| Transformation | `tr_{{location}}_sap_operation_to_order` | Operation.workOrder relation | +| ExtractionPipeline | `ep_{{location}}_sap` | Pipeline health tracking and config delivery | +| RAW Database | `db_{{location}}_sap` | SAP entity landing zone | +| RAW Tables | `functional_location`, `equipment`, `workorder`, `workpackage`, `worktask`, `workitem`, `state_store` | One per OData query plus an extractor-managed state-store table | ## Configuration +All variables are declared locally in `default.config.yaml` (no inheritance): + ```yaml variables: modules: cdf_sap_foundation: - location: "site1" - instanceSpace: "sp_isa_instance_space" - schemaSpace: "sp_isa_manufacturing" - dataModelVersion: "v1" - dataset: "ds_sap" - sapSystem: s4hana - sapPlant: "1000" - sapPlants: [] - sapDisableSsl: false - populateSysTagsFound: true - integration_owner_name: "Integration Owner" + location: "site1" # Site code, used in externalIds (ep__sap, db__sap) + instanceSpace: "sp_instances" # DM space for ISA Manufacturing Extension instances + dataset: "ds_sap" # dataSetExternalId for the pipeline and RAW database + sapPlant: "1000" # SAP plant code, used in OData filter expressions (MaintPlant eq '') + sapDisableSsl: false # Set true only if SAP server uses an untrusted self-signed certificate + + integration_owner_name: "Integration Owner" # Technical contact for the pipeline integration_owner_email: "integration.owner@example.com" - data_owner_name: "Data Owner" + + data_owner_name: "Data Owner" # Business contact for the data data_owner_email: "data.owner@example.com" ``` @@ -110,26 +81,40 @@ Set these on the host running the SAP OData Extractor: | `SAP_USERNAME` | SAP service account username | | `SAP_PASSWORD` | SAP service account password | | `CDF_PROJECT` | CDF project name | -| `CDF_URL` | CDF base URL | +| `CDF_URL` | CDF base URL (e.g. `https://api.cognitedata.com`) | | `IDP_TENANT_ID` | IdP tenant ID | | `IDP_CLIENT_ID` | Service account client ID | | `IDP_CLIENT_SECRET` | Service account client secret | ## Verify Before Deploy -SAP OData service names (`sap_service`), entity keys (`sap_key`), and **filter property casing** vary across landscapes. The shipped template uses `MaintPlant`, `Maintplant`, and `Mainplant` in different filters — confirm exact spelling against your service `$metadata` before deploying. - -## Transformation SQL — Important Note - -All six SQL files are **generalized scaffolds**. Preview each transformation against your actual RAW data and verify column names match your extractor output. See `.cursor/rules/cdf-transformations.mdc` for AI-assisted adaptation guidance. +SAP OData service names (`sap_service`), entity keys (`sap_key`), and **filter +property casing** vary across SAP versions and customer NW Gateway +configurations. The current `ep_sap.ExtractionPipeline.Config.yaml` ships with +plausible defaults but **must be verified against your SAP landscape**: + +- `sap_service` values (`ZGW_FUNCLOC_SRV`, `ZGW_GETEQIP_SRV`, + `ZPM_ORDER_DATA_EXPORT_SRV`, `ZPM_NOTI_EXTRACT_DATA_SRV`) are customer-specific + Z-services. +- `sap_key` field names (e.g. `Functlocation`, `Equipment`, `OrderId`, + `Activity`, `NotifNo`) follow each gateway's naming. +- **Filter property casing is inconsistent in the shipped template** — + `MaintPlant` (Funcloc), `Maintplant` (Equipment), `Mainplant` (Notifications). + The notifications filter in particular (`Mainplant`) is suspected to be a typo + for `Maintplant` or `MaintPlant`. Confirm the exact spelling against your + service `$metadata` document before deploying. + +See `.cursor/rules/cdf-transformations.mdc` for AI-assisted guidance when +authoring the downstream transformations into ISA Manufacturing Extension. ## Getting Started ### Prerequisites -- `models/isa_manufacturing_extension` deployed +- `models/isa_manufacturing_extension` deployed (downstream target) - SAP OData Extractor installed with network access to SAP NW Gateway -- Extractor service account with read/write to `db_{{location}}_sap` and the `{{dataset}}` data set +- Extractor service account with read/write to the `db_{{location}}_sap` RAW + database and read access to the `{{dataset}}` data set - SAP service account with READ access to PM/AM entities ### Deploy @@ -140,23 +125,8 @@ cdf deploy modules/sourcesystem/cdf_sap_foundation --env your-environment ### Configure and run the extractor -Set environment variables on the extractor host and start the extractor — it pulls config from `ep_{{location}}_sap` automatically. - -### Run transformations in order - -```bash -cdf transformations run tr_{{location}}_sap_assets --env your-environment -cdf transformations run tr_{{location}}_sap_equipment --env your-environment -cdf transformations run tr_{{location}}_sap_equipment_to_asset --env your-environment -cdf transformations run tr_{{location}}_sap_maintenance_orders --env your-environment -cdf transformations run tr_{{location}}_sap_operations --env your-environment -cdf transformations run tr_{{location}}_sap_operation_to_order --env your-environment -``` - -In production, the ingestion workflow (`cdf_ingestion_foundation`) handles ordering automatically. - -## Dependencies +The extractor config is delivered via the `ep_{{location}}_sap` extraction pipeline in CDF. Set the environment variables on the extractor host and start the extractor — it will pull its config from CDF automatically. -**Depends on**: `models/isa_manufacturing_extension` +### Verify -**Used by**: `foundation/cdf_ingestion_foundation` (references all 6 transformations with `dependsOn` ordering in the ingestion workflow) +Check that all seven RAW tables under `db_{{location}}_sap` are populated in CDF Data Explorer (the master tables — `functional_location`, `equipment` — populate weekly; the order/notification tables populate daily). \ No newline at end of file diff --git a/modules/sourcesystem/cdf_sap_foundation/default.config.yaml b/modules/sourcesystem/cdf_sap_foundation/default.config.yaml index e29049fb..ea47edfb 100644 --- a/modules/sourcesystem/cdf_sap_foundation/default.config.yaml +++ b/modules/sourcesystem/cdf_sap_foundation/default.config.yaml @@ -6,33 +6,17 @@ location: "site1" # DM space where ISA Manufacturing Extension instances are written instanceSpace: "sp_isa_instance_space" -# Schema space for ISA Manufacturing Extension views (used by transformations) -schemaSpace: "sp_isa_manufacturing" - -# Data model view version -dataModelVersion: "v1" - # dataSetExternalId for the extraction pipeline and RAW database dataset: "ds_sap" -# SAP system label — used in external IDs and source naming -sapSystem: s4hana - -# Single-plant deployment (default) +# SAP plant code — used in OData filter expressions (e.g. MaintPlant eq '{{sapPlant}}') sapPlant: "1000" -# Multi-plant override — set a list to expand extraction per plant, e.g. ["1000","2000","3000"] -# When non-empty this takes precedence over sapPlant -sapPlants: [] - # Disable SSL verification for the SAP gateway connection. # Set to true ONLY if the SAP server uses a self-signed certificate that is # not trusted by the extractor host. sapDisableSsl: false -# Set to false to omit sysTagsFound population on MaintenanceOrder instances -populateSysTagsFound: true - # Integration owner (technical contact for the pipeline) integration_owner_name: "Integration Owner" integration_owner_email: "integration.owner@example.com" diff --git a/modules/sourcesystem/cdf_sap_foundation/extraction_pipelines/ep_sap.ExtractionPipeline.Config.yaml b/modules/sourcesystem/cdf_sap_foundation/extraction_pipelines/ep_sap.ExtractionPipeline.Config.yaml index c4c0616b..31173556 100644 --- a/modules/sourcesystem/cdf_sap_foundation/extraction_pipelines/ep_sap.ExtractionPipeline.Config.yaml +++ b/modules/sourcesystem/cdf_sap_foundation/extraction_pipelines/ep_sap.ExtractionPipeline.Config.yaml @@ -1,16 +1,9 @@ externalId: "ep_{{location}}_sap" config: - # SAP OData Extractor configuration template - # Source: gss-knowledge-base/extractors/toolkit_examples/sap_odata_extractor_remote - # - # Environment variables required on the extractor host (local config.yml): - # CDF_PROJECT, CDF_URL, IDP_TENANT_ID, IDP_CLIENT_ID, IDP_CLIENT_SECRET - # SAP_GATEWAY_URL, SAP_SOURCE_NAME, SAP_CLIENT, SAP_USERNAME, SAP_PASSWORD - # - # IMPORTANT: SAP OData service names (sap_service) and entity keys (sap_key) vary - # across SAP versions and NW Gateway configurations. Verify all service names and - # field names against your SAP landscape before deploying. + # Runtime config for the SAP OData Extractor — see ep_sap.ExtractionPipeline.yaml + # documentation block for required environment variables and install steps. + # Source template: gss-knowledge-base/extractors/toolkit_examples/sap_odata_extractor_remote version: 1 diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/equipment.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/equipment.Table.yaml new file mode 100644 index 00000000..0cab110e --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/raw/equipment.Table.yaml @@ -0,0 +1,2 @@ +dbName: "db_{{location}}_sap" +tableName: equipment diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/functional_location.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/functional_location.Table.yaml new file mode 100644 index 00000000..ff5c7df1 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/raw/functional_location.Table.yaml @@ -0,0 +1,2 @@ +dbName: "db_{{location}}_sap" +tableName: functional_location diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/state_store.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/state_store.Table.yaml new file mode 100644 index 00000000..6877acda --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/raw/state_store.Table.yaml @@ -0,0 +1,4 @@ +# Extractor state checkpoints — managed by the SAP OData Extractor. +# Do not write to this table from transformations or external clients. +dbName: "db_{{location}}_sap" +tableName: state_store diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/db_sap.Database.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/workitem.Table.yaml similarity index 60% rename from modules/sourcesystem/cdf_sap_foundation/raw/db_sap.Database.yaml rename to modules/sourcesystem/cdf_sap_foundation/raw/workitem.Table.yaml index f7697f7f..162e3220 100644 --- a/modules/sourcesystem/cdf_sap_foundation/raw/db_sap.Database.yaml +++ b/modules/sourcesystem/cdf_sap_foundation/raw/workitem.Table.yaml @@ -1 +1,2 @@ dbName: "db_{{location}}_sap" +tableName: workitem diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/workorder.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/workorder.Table.yaml new file mode 100644 index 00000000..cc047bbd --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/raw/workorder.Table.yaml @@ -0,0 +1,2 @@ +dbName: "db_{{location}}_sap" +tableName: workorder diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/workpackage.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/workpackage.Table.yaml new file mode 100644 index 00000000..50553fc7 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/raw/workpackage.Table.yaml @@ -0,0 +1,2 @@ +dbName: "db_{{location}}_sap" +tableName: workpackage diff --git a/modules/sourcesystem/cdf_sap_foundation/raw/worktask.Table.yaml b/modules/sourcesystem/cdf_sap_foundation/raw/worktask.Table.yaml new file mode 100644 index 00000000..6c04eed1 --- /dev/null +++ b/modules/sourcesystem/cdf_sap_foundation/raw/worktask.Table.yaml @@ -0,0 +1,2 @@ +dbName: "db_{{location}}_sap" +tableName: worktask diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.sql deleted file mode 100644 index 525307dd..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.sql +++ /dev/null @@ -1,40 +0,0 @@ --- Transformation: SAP Functional Locations → ISAAsset DM instances --- Target view : ISAAsset (space: {{schemaSpace}}, version: {{dataModelVersion}}) --- Source RAW : db_{{location}}_sap.functional_location --- Run order : 1st — must complete before equipment and work order transformations --- --- SCAFFOLD — SAP column names (Functlocation, Descript, Fltyp, etc.) reflect the default --- FunclocListSet OData entity schema. Column names vary across SAP versions and NW Gateway --- configurations. Verify against your actual RAW table before running in production. --- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. - -WITH parent_lookup AS ( - -- Resolve parent functional location for hierarchy building - -- SAP stores the superior functional location in a dedicated column - SELECT - concat('{{sapSystem}}:floc:', cast(child.Functlocation AS STRING)) AS externalId, - node_reference( - '{{instanceSpace}}', - concat('{{sapSystem}}:floc:', cast(parent.Functlocation AS STRING)) - ) AS parent - FROM `db_{{location}}_sap`.`functional_location` AS child - JOIN `db_{{location}}_sap`.`functional_location` AS parent - ON child.Supfloc = parent.Functlocation -- Supfloc: superior functional location field - WHERE isnotnull(child.Functlocation) - AND isnotnull(parent.Functlocation) -) -SELECT - concat('{{sapSystem}}:floc:', cast(f.Functlocation AS STRING)) AS externalId, - '{{instanceSpace}}' AS space, - - cast(f.Descript AS STRING) AS name, - cast(f.Functlocation AS STRING) AS sourceId, - cast(f.Fltyp AS STRING) AS type, -- functional location category - 'SAP Functional Location' AS sourceContext, - - parent_lookup.parent AS parent - -FROM `db_{{location}}_sap`.`functional_location` AS f -LEFT JOIN parent_lookup - ON concat('{{sapSystem}}:floc:', cast(f.Functlocation AS STRING)) = parent_lookup.externalId -WHERE isnotnull(f.Functlocation) diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.yaml deleted file mode 100644 index 2fad3b41..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_assets.Transformation.yaml +++ /dev/null @@ -1,14 +0,0 @@ -externalId: "tr_{{location}}_sap_assets" -name: "tr:{{location}}:sap:assets" -dataSetExternalId: "{{dataset}}" -destination: - type: instances - dataModel: - space: "{{schemaSpace}}" - externalId: ISAAsset - version: "{{dataModelVersion}}" - destinationType: ISAAsset - instanceSpace: "{{instanceSpace}}" -ignoreNullFields: true -isPublic: true -conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.sql deleted file mode 100644 index 5e2cb868..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.sql +++ /dev/null @@ -1,22 +0,0 @@ --- Transformation: SAP Equipment → Equipment DM instances --- Target view : Equipment (space: {{schemaSpace}}, version: {{dataModelVersion}}) --- Source RAW : db_{{location}}_sap.equipment --- Run order : 2nd — run after tr_sap_assets --- --- SCAFFOLD — SAP column names (Equipment, Descript, Eqtyp, Manfactur, etc.) reflect the --- default EquipmentListSet OData entity schema. Verify against your actual RAW table. --- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. - -SELECT - concat('{{sapSystem}}:equip:', cast(Equipment AS STRING)) AS externalId, - '{{instanceSpace}}' AS space, - - cast(Descript AS STRING) AS name, - cast(Equipment AS STRING) AS sourceId, - cast(Eqtyp AS STRING) AS type, -- equipment category - cast(Manfactur AS STRING) AS manufacturer, - cast(Maintplant AS STRING) AS sourceContext, - 'SAP Equipment' AS sourceContext - -FROM `db_{{location}}_sap`.`equipment` -WHERE isnotnull(Equipment) diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.yaml deleted file mode 100644 index e0ec6267..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment.Transformation.yaml +++ /dev/null @@ -1,14 +0,0 @@ -externalId: "tr_{{location}}_sap_equipment" -name: "tr:{{location}}:sap:equipment" -dataSetExternalId: "{{dataset}}" -destination: - type: instances - dataModel: - space: "{{schemaSpace}}" - externalId: Equipment - version: "{{dataModelVersion}}" - destinationType: Equipment - instanceSpace: "{{instanceSpace}}" -ignoreNullFields: true -isPublic: true -conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.sql deleted file mode 100644 index 0857728f..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.sql +++ /dev/null @@ -1,23 +0,0 @@ --- Transformation: Equipment → Asset edge (sets asset property on Equipment instances) --- Target view : Equipment (space: {{schemaSpace}}, version: {{dataModelVersion}}) --- Source RAW : db_{{location}}_sap.equipment joined with functional_location --- Run order : 3rd — run after both tr_sap_assets and tr_sap_equipment --- --- SCAFFOLD — links each equipment to its functional location (parent asset) via the --- Funcloc column (functional location assigned to the equipment in SAP). --- Verify column name against your actual RAW schema. --- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. - -SELECT - concat('{{sapSystem}}:equip:', cast(e.Equipment AS STRING)) AS externalId, - '{{instanceSpace}}' AS space, - - -- asset: direct relation to the ISAAsset instance for the equipment's functional location - node_reference( - '{{instanceSpace}}', - concat('{{sapSystem}}:floc:', cast(e.Funcloc AS STRING)) -- Funcloc: assigned functional location - ) AS asset - -FROM `db_{{location}}_sap`.`equipment` AS e -WHERE isnotnull(e.Equipment) - AND isnotnull(e.Funcloc) diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.yaml deleted file mode 100644 index 142d3406..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_equipment_to_asset.Transformation.yaml +++ /dev/null @@ -1,14 +0,0 @@ -externalId: "tr_{{location}}_sap_equipment_to_asset" -name: "tr:{{location}}:sap:equipment_to_asset" -dataSetExternalId: "{{dataset}}" -destination: - type: instances - dataModel: - space: "{{schemaSpace}}" - externalId: Equipment - version: "{{dataModelVersion}}" - destinationType: Equipment - instanceSpace: "{{instanceSpace}}" -ignoreNullFields: true -isPublic: true -conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.sql deleted file mode 100644 index 7f1568a6..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.sql +++ /dev/null @@ -1,33 +0,0 @@ --- Transformation: SAP Work Orders → WorkOrder DM instances --- Target view : WorkOrder (space: {{schemaSpace}}, version: {{dataModelVersion}}) --- Source RAW : db_{{location}}_sap.workorder --- Run order : 4th — run after tr_sap_assets --- --- SCAFFOLD — SAP column names (OrderId, Descript, OrderType, etc.) reflect the default --- ExHeaderSet OData entity schema. Verify against your actual RAW table. --- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. - -SELECT - cast(OrderId AS STRING) AS externalId, - '{{instanceSpace}}' AS space, - - cast(ShortText AS STRING) AS name, - cast(OrderId AS STRING) AS sourceId, - cast(OrderType AS STRING) AS type, - cast(OrderStatus AS STRING) AS status, - cast(BasicStartDate AS TIMESTAMP) AS scheduledStartTime, - cast(BasicFinDate AS TIMESTAMP) AS scheduledEndTime, - cast(ActualStart AS TIMESTAMP) AS startTime, - cast(ActualFinish AS TIMESTAMP) AS endTime, - 'SAP Work Order' AS sourceContext, - - -- sysTagsFound: functional location tag for downstream SQL contextualization - -- Set populateSysTagsFound: false in default.config.yaml to omit - case - when '{{populateSysTagsFound}}' = 'true' AND isnotnull(FunctLoc) - then array(cast(FunctLoc AS STRING)) - else array() - end AS sysTagsFound - -FROM `db_{{location}}_sap`.`workorder` -WHERE isnotnull(OrderId) diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.yaml deleted file mode 100644 index 275f3867..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_maintenance_orders.Transformation.yaml +++ /dev/null @@ -1,14 +0,0 @@ -externalId: "tr_{{location}}_sap_maintenance_orders" -name: "tr:{{location}}:sap:maintenance_orders" -dataSetExternalId: "{{dataset}}" -destination: - type: instances - dataModel: - space: "{{schemaSpace}}" - externalId: WorkOrder - version: "{{dataModelVersion}}" - destinationType: WorkOrder - instanceSpace: "{{instanceSpace}}" -ignoreNullFields: true -isPublic: true -conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.sql deleted file mode 100644 index b6fa85f5..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.sql +++ /dev/null @@ -1,39 +0,0 @@ --- Transformation: Operation → WorkOrder relation (sets workOrder property on Operation instances) --- Target view : Operation (space: {{schemaSpace}}, version: {{dataModelVersion}}) --- Source RAW : db_{{location}}_sap.worktask --- Run order : 6th — run after both tr_sap_maintenance_orders and tr_sap_operations --- --- SCAFFOLD — joins worktask to workorder via OrderId to resolve the parent work order reference. --- Verify column names against your actual RAW tables. --- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. - -WITH unique_operations AS ( - SELECT - *, - row_number() OVER (PARTITION BY OrderId, Activity ORDER BY OrderId) AS rn - FROM `db_{{location}}_sap`.`worktask` -), -unique_orders AS ( - SELECT - *, - row_number() OVER (PARTITION BY OrderId ORDER BY OrderId) AS rn - FROM `db_{{location}}_sap`.`workorder` -) -SELECT - concat(cast(op.OrderId AS STRING), '-', cast(op.Activity AS STRING)) AS externalId, - '{{instanceSpace}}' AS space, - - -- workOrder: direct relation to the parent WorkOrder instance - node_reference( - '{{instanceSpace}}', - cast(wo.OrderId AS STRING) - ) AS workOrder - -FROM unique_operations AS op -JOIN unique_orders AS wo - ON op.OrderId = wo.OrderId -WHERE isnotnull(op.OrderId) - AND isnotnull(op.Activity) - AND isnotnull(wo.OrderId) - AND op.rn = 1 - AND wo.rn = 1 diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.yaml deleted file mode 100644 index 509a49b2..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operation_to_order.Transformation.yaml +++ /dev/null @@ -1,14 +0,0 @@ -externalId: "tr_{{location}}_sap_operation_to_order" -name: "tr:{{location}}:sap:operation_to_order" -dataSetExternalId: "{{dataset}}" -destination: - type: instances - dataModel: - space: "{{schemaSpace}}" - externalId: Operation - version: "{{dataModelVersion}}" - destinationType: Operation - instanceSpace: "{{instanceSpace}}" -ignoreNullFields: true -isPublic: true -conflictMode: upsert diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.sql b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.sql deleted file mode 100644 index a0e5c5bd..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.sql +++ /dev/null @@ -1,35 +0,0 @@ --- Transformation: SAP Work Tasks/Operations → Operation DM instances --- Target view : Operation (space: {{schemaSpace}}, version: {{dataModelVersion}}) --- Source RAW : db_{{location}}_sap.worktask --- Run order : 5th — run after tr_sap_maintenance_orders --- --- SCAFFOLD — SAP column names (OrderId, Activity, LongText, etc.) reflect the default --- ExOperationsSet OData entity schema. Verify against your actual RAW table. --- See .cursor/rules/cdf-transformations.mdc for AI-assisted adaptation guidance. - --- Deduplicate on composite key (OrderId + Activity) in case the extractor produces duplicates -WITH unique_operations AS ( - SELECT - *, - row_number() OVER ( - PARTITION BY OrderId, Activity - ORDER BY OrderId - ) AS rn - FROM `db_{{location}}_sap`.`worktask` -) -SELECT - concat(cast(OrderId AS STRING), '-', cast(Activity AS STRING)) AS externalId, - '{{instanceSpace}}' AS space, - - cast(LongText AS STRING) AS name, - concat(cast(OrderId AS STRING), '-', cast(Activity AS STRING)) AS sourceId, - cast(ControlKey AS STRING) AS type, - cast(UserStatus AS STRING) AS status, - cast(EarlySchedStart AS TIMESTAMP) AS scheduledStartTime, - cast(EarlySchedFin AS TIMESTAMP) AS scheduledEndTime, - 'SAP Operation' AS sourceContext - -FROM unique_operations -WHERE isnotnull(OrderId) - AND isnotnull(Activity) - AND rn = 1 diff --git a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.yaml b/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.yaml deleted file mode 100644 index f5cc34a0..00000000 --- a/modules/sourcesystem/cdf_sap_foundation/transformations/tr_sap_operations.Transformation.yaml +++ /dev/null @@ -1,14 +0,0 @@ -externalId: "tr_{{location}}_sap_operations" -name: "tr:{{location}}:sap:operations" -dataSetExternalId: "{{dataset}}" -destination: - type: instances - dataModel: - space: "{{schemaSpace}}" - externalId: Operation - version: "{{dataModelVersion}}" - destinationType: Operation - instanceSpace: "{{instanceSpace}}" -ignoreNullFields: true -isPublic: true -conflictMode: upsert