We're happy to announce the general availability of the Cognite Data Fusion API v1.
Please help us improve our products by letting us know what you think or if you have any issues. To send us feedback, or if you need help, contact support@cognite.com.
New features
External ID
The external ID field, (externalId
), is available in API v1 across multiple core resources: time series, assets, events, and files. You can now define a unique identifier for each data object in Cognite Data Fusion (CDF) as an optional extension to the existing id field.
The purpose of external IDs is to:
- Insert data without creating duplicate entries.
- Avoid extra lookups when updating data.
- Maintain relationships between data objects from source systems.
- Give you a way of performing key-value lookups with keys you control, and that works the same across core resources.
Learn more about external IDs here.
3D API
You can now upload and process 3D models with the 3D API. Initially, we support the upload of 3D models in the FBX format. More CAD formats will be added soon.
In CDF, a model is a container holding many revisions. For example, you can have a model named “Compressor”, and you can upload multiple revisions under that model as the design changes over time. When you create a revision, first upload the actual 3D file using the Files API, then create a new revision for the model linked to this file.
When you upload a new revision, CDF needs to process the 3D data to optimize it for rendering. This can take some time. We provide a status string in the revision object so you can follow the progress of the processing.
A 3D model is typically built up as a hierarchical structure. You can extract the 3D node hierarchy, and also create links from the 3D nodes to nodes in CDF’s asset hierarchy. This can be used to allow a user to click on equipment in a larger 3D model and access related sensor values or documentation.
The 3D models are typically rendered in a web application using our 3D viewer component called REVEAL. REVEAL loads a 3D model from CDF and renders it with high performance in a web browser. REVEAL has no default UI but provides a JavaScript API for flexible integration into different types of web applications.
Improvements
Structural improvements
The new version of the API has a consistent API design across all resource types, including:
- Consistent design and behavior for standard endpoints, with functionality such as insert, search, list, partial updates, delete.
- Common naming of query parameters, and request and response attributes.
- Shared pagination pattern with limit and cursor.
- Consistent use of response codes.
- Single error type for API.
- Documentation improvements: constraint definitions for input parameters, required fields, more detailed attribute documentation,
- A simplified API that provides one way to perform specific tasks.
Search and filtering improvements
You can now filter on metadata and source in search, list, and filter operations for assets, events, and files.
Time series allow for non-unique names
The time series name
attribute no longer has to be unique, and you can use the attribute as a display name instead of for lookup.
To define unique identifiers for time series, use the new externalId
attribute. For time series created through earlier API versions, the externalId field in API v1 will automatically be populated with the value of the name field. The time series you create with API v1 will require setting the new legacyName
attribute to be discoverable by older API versions.
Safe asset deletion
Previously, Aseet Delete API, due to its implicit recursive nature, allowed for unintentional removal of entire asset trees. We changed this operation to be more explicit by modifying the default behavior to delete only specific leaf nodes of the asset tree. The new parameter recursive:true
allows you to explicitly enable recursive deletion of an entire asset subtree.
Asset subtree query removal
Support for querying asset subtrees has been removed from the API. Instead, we introduced new filters that allow for narrowing down results to a specific list of root assets. A functionality similar to querying asset subtrees will be available through SDKs. This change is an enabler for introducing support for mutable asset hierarchies in the future.
Service accounts
Users from previous API versions are converted to service accounts in API v1. Service accounts represent an application or service communicating with the CDF API. Each service account should represent a single application instance.
Identity and access management - limits
The new release limits the number of IAM (Identity and Access Management) resources you can create. If you exceed the limits, you need to remove existing resources before you can create new ones:
- Number of API keys per service account: 5.
- Number of service accounts per project: 700.
- Number of groups per project: 50 (undeleted groups).
- Number of security categories per project: 1000.
New SDK versions
New versions of Cognite's official SDKs supporting API v1:
New API versioning
With this release, Cognite is excited to introduce a new versioning scheme for our APIs. Starting now, we will use only major versions for our API (e.g., v1, v2). We will release a new major version only if we introduce changes that are not backward compatible and may affect existing clients.
When you develop code using the CDF API, please accommodate for backward compatible (“non-breaking”) changes to ensure your application keeps working as we introduce new features and improvements.
Click here to learn more about API versioning, our policy for backwards compatibility, and the end-of-life schedule for our APIs.
Deprecating API 0.3-0.6
The following API versions are scheduled for end-of-life. If you have applications, solutions, or demos using these APIs and SDKs, you need to migrate to the current stable API and accompanying SDKs. If you have any questions or need assistance please contact support@cognite.com
The APIs will not be available after their end-of-life dates.
API version | SDK version | End-of-life date |
---|---|---|
API 0.5 API 0.6 | Python SDK 0.x.x or earlier JavaScript SDK 1.x.x or earlier | January 02, 2020 |
API 0.3 API 0.4 | Python SDK 0.11.x or earlier | September 10, 2019 |