industrial-model 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +372 -1
- package/dist/cognite-core/index.cjs +691 -0
- package/dist/cognite-core/index.cjs.map +1 -1
- package/dist/cognite-core/index.d.cts +6 -2
- package/dist/cognite-core/index.d.ts +6 -2
- package/dist/cognite-core/index.js +691 -0
- package/dist/cognite-core/index.js.map +1 -1
- package/dist/index.cjs +680 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -3
- package/dist/index.d.ts +13 -3
- package/dist/index.js +680 -0
- package/dist/index.js.map +1 -1
- package/dist/{types-DCP5GMi3.d.cts → types-BrD2jPB-.d.cts} +138 -11
- package/dist/{types-DCP5GMi3.d.ts → types-BrD2jPB-.d.ts} +138 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,6 +12,9 @@ TypeScript SDK for querying [Cognite Flexible Data Models (FDM)](https://docs.co
|
|
|
12
12
|
- **Industrial filters** - combine scalar filters, list filters, full-text search, and nested relation filters.
|
|
13
13
|
- **Pagination support** - use cursors manually or fetch all root pages with `limit: -1`.
|
|
14
14
|
- **Aggregation support** - count, group, list distinct values, and aggregate numeric properties.
|
|
15
|
+
- **Mutation support** - upsert model-shaped node patches and delete nodes by identity.
|
|
16
|
+
- **Datapoints support** - read, write, and delete time series datapoints through model-friendly option objects.
|
|
17
|
+
- **Files support** - upload files and retrieve pre-signed download URLs, keyed to model node identities.
|
|
15
18
|
- **Runtime validation option** - parse query results with Zod schemas derived from Cognite view metadata.
|
|
16
19
|
- **CJS and ESM builds** - works in Node.js and common bundler setups.
|
|
17
20
|
|
|
@@ -518,6 +521,230 @@ const { items } = await model.query<CogniteAsset>()({
|
|
|
518
521
|
|
|
519
522
|
Expanded relations use internal pagination as well. When a nested relation query reaches the internal page size, the client follows dependency cursors for up to 3 additional rounds.
|
|
520
523
|
|
|
524
|
+
## Upsert
|
|
525
|
+
|
|
526
|
+
Use `upsert()` to create or patch nodes with the same model shape you use for queries. Each item must include `space` and `externalId`; all other fields are optional and only the fields you pass are updated.
|
|
527
|
+
|
|
528
|
+
```ts
|
|
529
|
+
await model.upsert<CogniteAsset>()({
|
|
530
|
+
viewExternalId: "CogniteAsset",
|
|
531
|
+
items: [
|
|
532
|
+
{
|
|
533
|
+
space: "asset-space",
|
|
534
|
+
externalId: "pump-1",
|
|
535
|
+
name: "Pump 1",
|
|
536
|
+
parent: { space: "asset-space", externalId: "root" },
|
|
537
|
+
},
|
|
538
|
+
],
|
|
539
|
+
});
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
Direct relations are written as `NodeId` values. Reverse direct relations are written by patching the target nodes through the relation field defined in Cognite. For example, writing `children` on an asset updates each child asset's `parent` reference.
|
|
543
|
+
|
|
544
|
+
```ts
|
|
545
|
+
await model.upsert<CogniteAsset>()({
|
|
546
|
+
viewExternalId: "CogniteAsset",
|
|
547
|
+
items: [
|
|
548
|
+
{
|
|
549
|
+
space: "asset-space",
|
|
550
|
+
externalId: "parent-asset",
|
|
551
|
+
children: [{ space: "asset-space", externalId: "child-1" }],
|
|
552
|
+
},
|
|
553
|
+
],
|
|
554
|
+
});
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
Edge-backed relations need an edge ID. Provide `onEdgeCreation` for every edge connection property you write. The callback receives normalized `startNode`, `endNode`, and `edgeType` values after the SDK has applied the relation direction from the view metadata.
|
|
558
|
+
|
|
559
|
+
```ts
|
|
560
|
+
await model.upsert<Cognite3DObject>()({
|
|
561
|
+
viewExternalId: "Cognite3DObject",
|
|
562
|
+
items: [
|
|
563
|
+
{
|
|
564
|
+
space: "object-space",
|
|
565
|
+
externalId: "object-1",
|
|
566
|
+
images360: [{ space: "image-space", externalId: "image-1" }],
|
|
567
|
+
},
|
|
568
|
+
],
|
|
569
|
+
onEdgeCreation: {
|
|
570
|
+
images360: ({ startNode, endNode, edgeType }) => ({
|
|
571
|
+
space: startNode.space,
|
|
572
|
+
externalId: `${startNode.externalId}:${edgeType.externalId}:${endNode.externalId}`,
|
|
573
|
+
}),
|
|
574
|
+
},
|
|
575
|
+
});
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
`edgeMode` controls how edge connection properties are applied:
|
|
579
|
+
|
|
580
|
+
| Mode | Behavior |
|
|
581
|
+
| --- | --- |
|
|
582
|
+
| `"append"` | Default. Creates the generated edges and leaves existing edges untouched. |
|
|
583
|
+
| `"replace"` | Queries existing edges for the provided edge connection fields, deletes edges that were not generated by the current upsert, then applies the new edges. |
|
|
584
|
+
|
|
585
|
+
To clear an edge connection for a node, include the property with an empty array and use `edgeMode: "replace"`:
|
|
586
|
+
|
|
587
|
+
```ts
|
|
588
|
+
await model.upsert<Cognite3DObject>()({
|
|
589
|
+
viewExternalId: "Cognite3DObject",
|
|
590
|
+
edgeMode: "replace",
|
|
591
|
+
items: [
|
|
592
|
+
{
|
|
593
|
+
space: "object-space",
|
|
594
|
+
externalId: "object-1",
|
|
595
|
+
images360: [],
|
|
596
|
+
},
|
|
597
|
+
],
|
|
598
|
+
});
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
This deletes existing `images360` edges for `object-1`. Other edge connection fields on the same node are not touched, and omitting `images360` entirely leaves its existing edges unchanged.
|
|
602
|
+
|
|
603
|
+
Use `replace: true` when you want Cognite apply replace semantics for container-backed node properties.
|
|
604
|
+
|
|
605
|
+
Important constraints:
|
|
606
|
+
|
|
607
|
+
- Relation fields accept only `NodeId` or `NodeId[]` references. Nested node mutation is intentionally not supported.
|
|
608
|
+
- Unknown fields are rejected before Cognite is called.
|
|
609
|
+
- Edge connection fields require `onEdgeCreation.<property>` only when the submitted array contains edges to create.
|
|
610
|
+
- Cognite apply requests are limited to 1000 writes/deletes per call. You can still pass more than 1000 upsert items or edge references; the SDK follows paginated edge-replacement queries and splits large apply payloads into multiple Cognite calls.
|
|
611
|
+
- `edgeMode: "replace"` only replaces edge connection fields included in the submitted items.
|
|
612
|
+
|
|
613
|
+
## Delete
|
|
614
|
+
|
|
615
|
+
Use `delete()` when you only need to delete nodes by identity. The method accepts an array of values with `space` and `externalId`; any extra fields are ignored.
|
|
616
|
+
|
|
617
|
+
```ts
|
|
618
|
+
await model.delete([
|
|
619
|
+
{ space: "asset-space", externalId: "pump-1" },
|
|
620
|
+
{ space: "asset-space", externalId: "pump-2", name: "Pump 2" },
|
|
621
|
+
]);
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
The delete operation is view-independent, so it does not require `viewExternalId` and is also available directly on `CogniteCoreClient`.
|
|
625
|
+
|
|
626
|
+
```ts
|
|
627
|
+
await core.delete([{ space: "asset-space", externalId: "pump-1" }]);
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
Deletes are sent through Cognite apply. When more than 1000 nodes are provided, the SDK splits them into multiple Cognite calls.
|
|
631
|
+
|
|
632
|
+
## Datapoints
|
|
633
|
+
|
|
634
|
+
Use `model.datapoints` for Cognite time series data. The public API talks in terms of `timeSeries`, ranges, and datapoint batches; the Cognite SDK `items` and `instanceId` payload shape stays internal.
|
|
635
|
+
|
|
636
|
+
```ts
|
|
637
|
+
const { items } = await model.datapoints.retrieve({
|
|
638
|
+
timeSeries: [{ space: "ts-space", externalId: "temperature", targetUnit: "degC" }],
|
|
639
|
+
start: new Date("2024-01-01T00:00:00.000Z"),
|
|
640
|
+
end: new Date("2024-01-02T00:00:00.000Z"),
|
|
641
|
+
limit: 100,
|
|
642
|
+
});
|
|
643
|
+
|
|
644
|
+
items[0]?.timeSeries.externalId;
|
|
645
|
+
items[0]?.datapoints;
|
|
646
|
+
items[0]?.cursor; // next cursor, or null
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
Pass `limit: -1` to follow datapoint cursors and return all pages for each requested time series.
|
|
650
|
+
|
|
651
|
+
```ts
|
|
652
|
+
const history = await model.datapoints.retrieve({
|
|
653
|
+
timeSeries: [{ space: "ts-space", externalId: "temperature" }],
|
|
654
|
+
start: new Date("2024-01-01T00:00:00.000Z"),
|
|
655
|
+
limit: -1,
|
|
656
|
+
});
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
Read the latest datapoint before a given timestamp:
|
|
660
|
+
|
|
661
|
+
```ts
|
|
662
|
+
const latest = await model.datapoints.latest({
|
|
663
|
+
timeSeries: [{ space: "ts-space", externalId: "temperature" }],
|
|
664
|
+
ignoreUnknownIds: true,
|
|
665
|
+
});
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
Write datapoints by passing an array of insert items directly:
|
|
669
|
+
|
|
670
|
+
```ts
|
|
671
|
+
await model.datapoints.insert([
|
|
672
|
+
{
|
|
673
|
+
timeSeries: { space: "ts-space", externalId: "temperature" },
|
|
674
|
+
datapoints: [{ timestamp: new Date(), value: 42 }],
|
|
675
|
+
},
|
|
676
|
+
]);
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
Delete datapoints by passing an array of ranges directly:
|
|
680
|
+
|
|
681
|
+
```ts
|
|
682
|
+
await model.datapoints.delete([
|
|
683
|
+
{
|
|
684
|
+
timeSeries: { space: "ts-space", externalId: "temperature" },
|
|
685
|
+
start: new Date("2024-01-01T00:00:00.000Z"),
|
|
686
|
+
end: new Date("2024-01-02T00:00:00.000Z"),
|
|
687
|
+
},
|
|
688
|
+
]);
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
## Files
|
|
692
|
+
|
|
693
|
+
Use `model.files` to upload files to Cognite and retrieve pre-signed download URLs. Both operations use `space` and `externalId` node identities as keys; the Cognite `instanceId` payload shape stays internal.
|
|
694
|
+
|
|
695
|
+
Upload a file and optionally pass the binary content as a second argument to complete the upload in one call. When content is provided, Cognite uploads it inline and `uploaded` is `true` on the result.
|
|
696
|
+
|
|
697
|
+
```ts
|
|
698
|
+
const result = await model.files.upload(
|
|
699
|
+
{
|
|
700
|
+
space: "file-space",
|
|
701
|
+
externalId: "report-2024",
|
|
702
|
+
name: "annual-report.pdf",
|
|
703
|
+
mimeType: "application/pdf",
|
|
704
|
+
directory: "/reports",
|
|
705
|
+
source: "erp",
|
|
706
|
+
metadata: { department: "finance", year: "2024" },
|
|
707
|
+
},
|
|
708
|
+
pdfContent, // Buffer, Blob, ArrayBuffer, ReadableStream, …
|
|
709
|
+
);
|
|
710
|
+
|
|
711
|
+
result.space; // "file-space"
|
|
712
|
+
result.externalId; // "report-2024"
|
|
713
|
+
result.name; // "annual-report.pdf"
|
|
714
|
+
result.uploaded; // true — content was provided
|
|
715
|
+
result.createdTime; // Date
|
|
716
|
+
result.lastUpdatedTime; // Date
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
Omit the content argument to receive a pre-signed `uploadUrl` instead. Use it to push the file binary from the client side without routing it through your server:
|
|
720
|
+
|
|
721
|
+
```ts
|
|
722
|
+
const result = await model.files.upload({
|
|
723
|
+
space: "file-space",
|
|
724
|
+
externalId: "report-2024",
|
|
725
|
+
name: "annual-report.pdf",
|
|
726
|
+
mimeType: "application/pdf",
|
|
727
|
+
});
|
|
728
|
+
|
|
729
|
+
result.uploaded; // false — content not yet uploaded
|
|
730
|
+
result.uploadUrl; // "https://storage.example.com/…" — use to PUT the file
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
Retrieve pre-signed download URLs for one or more files by node identity:
|
|
734
|
+
|
|
735
|
+
```ts
|
|
736
|
+
const urls = await model.files.getDownloadUrls([
|
|
737
|
+
{ space: "file-space", externalId: "report-2024" },
|
|
738
|
+
{ space: "file-space", externalId: "manual-v3" },
|
|
739
|
+
]);
|
|
740
|
+
|
|
741
|
+
urls[0]?.downloadUrl; // pre-signed URL ready to use
|
|
742
|
+
urls[0]?.space;
|
|
743
|
+
urls[0]?.externalId;
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
The returned array preserves the input order. Passing an empty array returns `[]` without calling Cognite.
|
|
747
|
+
|
|
521
748
|
## Aggregation
|
|
522
749
|
|
|
523
750
|
Use `aggregate()` when you need grouped counts, distinct values, or numeric summaries without loading every instance.
|
|
@@ -654,7 +881,7 @@ For applications working with the Cognite Core Data Model (`cdf_cdm/CogniteCore/
|
|
|
654
881
|
|
|
655
882
|
```ts
|
|
656
883
|
import { CogniteClient } from "@cognite/sdk";
|
|
657
|
-
import { CogniteCoreClient } from "industrial-model";
|
|
884
|
+
import { CogniteCoreClient } from "industrial-model/cognite-core";
|
|
658
885
|
|
|
659
886
|
const client = new CogniteClient({ ... });
|
|
660
887
|
const core = new CogniteCoreClient(client);
|
|
@@ -696,6 +923,36 @@ items[0]?.group?.manufacturer;
|
|
|
696
923
|
items[0]?.aggregate?.value;
|
|
697
924
|
```
|
|
698
925
|
|
|
926
|
+
Upserts use the same pattern and infer the item shape from the view name:
|
|
927
|
+
|
|
928
|
+
```ts
|
|
929
|
+
await core.upsert("CogniteAsset")({
|
|
930
|
+
items: [
|
|
931
|
+
{
|
|
932
|
+
space: "asset-space",
|
|
933
|
+
externalId: "pump-1",
|
|
934
|
+
name: "Pump 1",
|
|
935
|
+
parent: { space: "asset-space", externalId: "root" },
|
|
936
|
+
},
|
|
937
|
+
],
|
|
938
|
+
});
|
|
939
|
+
```
|
|
940
|
+
|
|
941
|
+
Deletes are view-independent:
|
|
942
|
+
|
|
943
|
+
```ts
|
|
944
|
+
await core.delete([{ space: "asset-space", externalId: "pump-1" }]);
|
|
945
|
+
```
|
|
946
|
+
|
|
947
|
+
`core.datapoints` exposes the same executor API as `model.datapoints` on `IndustrialModelClient`:
|
|
948
|
+
|
|
949
|
+
```ts
|
|
950
|
+
const { items } = await core.datapoints.retrieve({
|
|
951
|
+
timeSeries: [{ space: "ts-space", externalId: "temperature" }],
|
|
952
|
+
limit: 100,
|
|
953
|
+
});
|
|
954
|
+
```
|
|
955
|
+
|
|
699
956
|
All Cognite Core view types are exported from `industrial-model` and can be imported directly for use with `IndustrialModelClient` if needed:
|
|
700
957
|
|
|
701
958
|
```ts
|
|
@@ -849,6 +1106,18 @@ Same as `model.query<TModel>()(options)` on `IndustrialModelClient`, except the
|
|
|
849
1106
|
|
|
850
1107
|
Same as `model.aggregate<TModel>()(options)` on `IndustrialModelClient`, with the view name as the first positional argument.
|
|
851
1108
|
|
|
1109
|
+
### `core.upsert(viewExternalId)(options)`
|
|
1110
|
+
|
|
1111
|
+
Same as `model.upsert<TModel>()(options)` on `IndustrialModelClient`, with the view name as the first positional argument. The model type is inferred from the Cognite Core view name.
|
|
1112
|
+
|
|
1113
|
+
### `core.delete(items)`
|
|
1114
|
+
|
|
1115
|
+
Same as `model.delete(items)` on `IndustrialModelClient`. Deletes nodes by `space` and `externalId`; no view name is required.
|
|
1116
|
+
|
|
1117
|
+
### `core.datapoints`
|
|
1118
|
+
|
|
1119
|
+
Same as `model.datapoints` on `IndustrialModelClient`. All four methods — `retrieve`, `latest`, `insert`, and `delete` — are available without a view name.
|
|
1120
|
+
|
|
852
1121
|
### `new IndustrialModelClient(client, dataModelId, options?)`
|
|
853
1122
|
|
|
854
1123
|
| Parameter | Type | Description |
|
|
@@ -883,6 +1152,58 @@ type QueryResult<TItem> = {
|
|
|
883
1152
|
|
|
884
1153
|
Each item includes instance metadata such as `space`, `externalId`, `version`, `createdTime`, `deletedTime`, and `lastUpdatedTime`, plus the selected fields.
|
|
885
1154
|
|
|
1155
|
+
### `model.upsert<TModel>()(options)`
|
|
1156
|
+
|
|
1157
|
+
`upsert()` uses the same model type as `query()` and accepts partial node patches. It returns the Cognite apply result items.
|
|
1158
|
+
|
|
1159
|
+
| Option | Description |
|
|
1160
|
+
| --- | --- |
|
|
1161
|
+
| `viewExternalId` | View to create or patch. |
|
|
1162
|
+
| `items` | Node patches. Each item must include `space` and `externalId`. Inputs larger than Cognite's 1000-item apply limit are split into multiple calls. |
|
|
1163
|
+
| `replace` | Optional. Enables Cognite apply replace semantics for submitted container-backed properties. |
|
|
1164
|
+
| `edgeMode` | Optional. `"append"` by default; use `"replace"` to remove existing edge connection edges for submitted edge fields before applying the new references. |
|
|
1165
|
+
| `onEdgeCreation` | Optional map of edge connection property names to callbacks that generate edge IDs. Required for every edge connection property that creates one or more edges. |
|
|
1166
|
+
|
|
1167
|
+
Returns:
|
|
1168
|
+
|
|
1169
|
+
```ts
|
|
1170
|
+
type UpsertResult = {
|
|
1171
|
+
items: Array<{
|
|
1172
|
+
instanceType: "node" | "edge";
|
|
1173
|
+
space: string;
|
|
1174
|
+
externalId: string;
|
|
1175
|
+
version?: number;
|
|
1176
|
+
wasModified?: boolean;
|
|
1177
|
+
createdTime?: number;
|
|
1178
|
+
lastUpdatedTime?: number;
|
|
1179
|
+
}>;
|
|
1180
|
+
};
|
|
1181
|
+
```
|
|
1182
|
+
|
|
1183
|
+
### `model.delete<TItem extends NodeId>(items)`
|
|
1184
|
+
|
|
1185
|
+
Deletes nodes by identity. Each item must include `space` and `externalId`; extra fields are ignored. Inputs larger than Cognite's 1000-item apply limit are split into multiple calls.
|
|
1186
|
+
|
|
1187
|
+
```ts
|
|
1188
|
+
await model.delete([{ space: "asset-space", externalId: "pump-1" }]);
|
|
1189
|
+
```
|
|
1190
|
+
|
|
1191
|
+
Returns:
|
|
1192
|
+
|
|
1193
|
+
```ts
|
|
1194
|
+
type DeleteResult = {
|
|
1195
|
+
items: Array<{
|
|
1196
|
+
instanceType: "node";
|
|
1197
|
+
space: string;
|
|
1198
|
+
externalId: string;
|
|
1199
|
+
version?: number;
|
|
1200
|
+
wasModified?: boolean;
|
|
1201
|
+
createdTime?: number;
|
|
1202
|
+
lastUpdatedTime?: number;
|
|
1203
|
+
}>;
|
|
1204
|
+
};
|
|
1205
|
+
```
|
|
1206
|
+
|
|
886
1207
|
### `model.aggregate<TModel>()(options)`
|
|
887
1208
|
|
|
888
1209
|
| Option | Description |
|
|
@@ -903,6 +1224,50 @@ Provide at least one of `groupBy` or `aggregate`. Omit `aggregate` to fetch dist
|
|
|
903
1224
|
| `max` | `{ max: "volume" }` | Maximum numeric value. |
|
|
904
1225
|
| `sum` | `{ sum: "volume" }` | Sum of a numeric property. |
|
|
905
1226
|
|
|
1227
|
+
### `model.files.upload(fileInfo, content?)`
|
|
1228
|
+
|
|
1229
|
+
Uploads a file to Cognite. `fileInfo` fields:
|
|
1230
|
+
|
|
1231
|
+
| Field | Type | Description |
|
|
1232
|
+
| --- | --- | --- |
|
|
1233
|
+
| `space` | `string` | Node space. |
|
|
1234
|
+
| `externalId` | `string` | Node external ID. |
|
|
1235
|
+
| `name` | `string` | File name. |
|
|
1236
|
+
| `mimeType` | `string` | Optional MIME type. |
|
|
1237
|
+
| `directory` | `string` | Optional directory path within the project. |
|
|
1238
|
+
| `source` | `string` | Optional source system identifier. |
|
|
1239
|
+
| `metadata` | `Record<string, string>` | Optional key-value metadata. |
|
|
1240
|
+
|
|
1241
|
+
`content` accepts any value accepted by the Cognite SDK file upload (`Buffer`, `Blob`, `ArrayBuffer`, `ReadableStream`, …). When provided, the file is uploaded inline and `uploaded` is `true`. When omitted, Cognite returns a pre-signed `uploadUrl` for a separate upload and `uploaded` is `false`.
|
|
1242
|
+
|
|
1243
|
+
Returns `FileUploadResult`:
|
|
1244
|
+
|
|
1245
|
+
```ts
|
|
1246
|
+
type FileUploadResult = NodeId & {
|
|
1247
|
+
name: string;
|
|
1248
|
+
uploaded: boolean;
|
|
1249
|
+
mimeType?: string;
|
|
1250
|
+
directory?: string;
|
|
1251
|
+
source?: string;
|
|
1252
|
+
uploadedTime?: Date;
|
|
1253
|
+
createdTime: Date;
|
|
1254
|
+
lastUpdatedTime: Date;
|
|
1255
|
+
uploadUrl?: string;
|
|
1256
|
+
};
|
|
1257
|
+
```
|
|
1258
|
+
|
|
1259
|
+
### `model.files.getDownloadUrls(nodeIds)`
|
|
1260
|
+
|
|
1261
|
+
Retrieves one pre-signed download URL per node, in the same order as the input. Passing an empty array returns `[]` without calling Cognite.
|
|
1262
|
+
|
|
1263
|
+
Returns `FileDownloadUrl[]`:
|
|
1264
|
+
|
|
1265
|
+
```ts
|
|
1266
|
+
type FileDownloadUrl = NodeId & {
|
|
1267
|
+
downloadUrl: string;
|
|
1268
|
+
};
|
|
1269
|
+
```
|
|
1270
|
+
|
|
906
1271
|
### Filter Operators
|
|
907
1272
|
|
|
908
1273
|
| Field type | Operators |
|
|
@@ -938,6 +1303,12 @@ Logical combinators `AND`, `OR`, and `NOT` are supported at any nesting level, i
|
|
|
938
1303
|
| `QuerySelect` | Type helper for reusable query selections. |
|
|
939
1304
|
| `QueryResult`, `QueryResultItem` | Query output types. |
|
|
940
1305
|
| `AggregateResult`, `AggregateResultItem` | Aggregate output types. |
|
|
1306
|
+
| `UpsertOptions`, `UpsertNode`, `UpsertProperties` | Upsert input helper types. |
|
|
1307
|
+
| `UpsertResult`, `UpsertResultItem` | Upsert output types. |
|
|
1308
|
+
| `DeleteExecutor`, `DeleteResult`, `DeleteResultItem` | Delete helper and output types. |
|
|
1309
|
+
| `EdgeCreationContext`, `EdgeCreationCallback`, `EdgeCreationCallbacks`, `EdgeMode` | Edge upsert helper types. |
|
|
1310
|
+
| `DatapointsExecutor`, `DatapointsRetrieveOptions`, `DatapointsLatestOptions`, `DatapointsLatestSeries`, `DatapointsInsertItem`, `DatapointsDeleteRange`, `DatapointsResult`, `DatapointSeriesResult`, `DatapointAggregate` | Datapoints types. |
|
|
1311
|
+
| `FilesExecutor`, `FileUploadInfo`, `FileUploadResult`, `FileDownloadUrl` | Files types. |
|
|
941
1312
|
| `IndustrialModelClientOptions` | Client configuration options. |
|
|
942
1313
|
|
|
943
1314
|
**Cognite Core**
|