from cognite.client.data_classes.data_modeling import DataModelApply
data_models = [
DataModelApply(space="mySpace",external_id="myDataModel",version="v1"),
DataModelApply(space="mySpace",external_id="myOtherDataModel",version="v1")]
res = client.data_modeling.data_models.apply(data_models)curl --request POST \
--url https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"space": "<string>",
"externalId": "<string>",
"version": "<string>",
"name": "<string>",
"description": "<string>",
"views": [
{
"type": "view",
"space": "<string>",
"externalId": "<string>",
"version": "<string>"
}
]
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
items: [
{
space: '<string>',
externalId: '<string>',
version: '<string>',
name: '<string>',
description: '<string>',
views: [{type: 'view', space: '<string>', externalId: '<string>', version: '<string>'}]
}
]
})
};
fetch('https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'items' => [
[
'space' => '<string>',
'externalId' => '<string>',
'version' => '<string>',
'name' => '<string>',
'description' => '<string>',
'views' => [
[
'type' => 'view',
'space' => '<string>',
'externalId' => '<string>',
'version' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels"
payload := strings.NewReader("{\n \"items\": [\n {\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"views\": [\n {\n \"type\": \"view\",\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\"\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"views\": [\n {\n \"type\": \"view\",\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"views\": [\n {\n \"type\": \"view\",\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"space": "<string>",
"externalId": "<string>",
"version": "<string>",
"createdTime": 1730204346000,
"lastUpdatedTime": 1730204346000,
"isGlobal": true,
"name": "<string>",
"description": "<string>",
"views": [
{
"type": "view",
"space": "<string>",
"externalId": "<string>",
"version": "<string>"
}
]
}
]
}{
"error": {
"code": 401,
"message": "Could not authenticate.",
"missing": [
{}
],
"duplicated": [
{}
]
}
}{
"error": {
"code": 409,
"message": "<string>",
"isAutoRetryable": true
}
}Create or update data models
Required capabilities:
dataModelsAcl:WRITE
Add or update (upsert) data models. For unchanged data model specifications, the operation completes without making any changes. We will not update the lastUpdatedTime value for models that remain unchanged.
from cognite.client.data_classes.data_modeling import DataModelApply
data_models = [
DataModelApply(space="mySpace",external_id="myDataModel",version="v1"),
DataModelApply(space="mySpace",external_id="myOtherDataModel",version="v1")]
res = client.data_modeling.data_models.apply(data_models)curl --request POST \
--url https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"space": "<string>",
"externalId": "<string>",
"version": "<string>",
"name": "<string>",
"description": "<string>",
"views": [
{
"type": "view",
"space": "<string>",
"externalId": "<string>",
"version": "<string>"
}
]
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
items: [
{
space: '<string>',
externalId: '<string>',
version: '<string>',
name: '<string>',
description: '<string>',
views: [{type: 'view', space: '<string>', externalId: '<string>', version: '<string>'}]
}
]
})
};
fetch('https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'items' => [
[
'space' => '<string>',
'externalId' => '<string>',
'version' => '<string>',
'name' => '<string>',
'description' => '<string>',
'views' => [
[
'type' => 'view',
'space' => '<string>',
'externalId' => '<string>',
'version' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels"
payload := strings.NewReader("{\n \"items\": [\n {\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"views\": [\n {\n \"type\": \"view\",\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\"\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"views\": [\n {\n \"type\": \"view\",\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{cluster}.cognitedata.com/api/v1/projects/{project}/models/datamodels")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"views\": [\n {\n \"type\": \"view\",\n \"space\": \"<string>\",\n \"externalId\": \"<string>\",\n \"version\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"space": "<string>",
"externalId": "<string>",
"version": "<string>",
"createdTime": 1730204346000,
"lastUpdatedTime": 1730204346000,
"isGlobal": true,
"name": "<string>",
"description": "<string>",
"views": [
{
"type": "view",
"space": "<string>",
"externalId": "<string>",
"version": "<string>"
}
]
}
]
}{
"error": {
"code": 401,
"message": "Could not authenticate.",
"missing": [
{}
],
"duplicated": [
{}
]
}
}{
"error": {
"code": 409,
"message": "<string>",
"isAutoRetryable": true
}
}Authorizations
Access token issued by the CDF project's configured identity provider. Access token must be an OpenID Connect token, and the project must be configured to accept OpenID Connect tokens. Use a header key of 'Authorization' with a value of 'Bearer $accesstoken'. The token can be obtained through any flow supported by the identity provider.
Body
List of data models to add
List of data models to create/update
1 - 100 elementsShow child attributes
Show child attributes
Response
List of data models
List of data models
Show child attributes
Show child attributes
Was this page helpful?