curl --request POST \
--url https://api.getcortexapp.com/api/v1/catalog-pages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"iconTag": "cortex",
"isDraft": true,
"name": "<string>",
"slug": "my-catalog",
"description": "<string>",
"filter": {
"groups": {
"exclude": [
"<string>"
],
"include": [
"<string>"
]
},
"query": "<string>",
"types": {
"exclude": [
"<string>"
],
"include": [
"<string>"
]
}
},
"relationshipTypeTag": "<string>"
}
'import requests
url = "https://api.getcortexapp.com/api/v1/catalog-pages"
payload = {
"iconTag": "cortex",
"isDraft": True,
"name": "<string>",
"slug": "my-catalog",
"description": "<string>",
"filter": {
"groups": {
"exclude": ["<string>"],
"include": ["<string>"]
},
"query": "<string>",
"types": {
"exclude": ["<string>"],
"include": ["<string>"]
}
},
"relationshipTypeTag": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
iconTag: 'cortex',
isDraft: true,
name: '<string>',
slug: 'my-catalog',
description: '<string>',
filter: {
groups: {exclude: ['<string>'], include: ['<string>']},
query: '<string>',
types: {exclude: ['<string>'], include: ['<string>']}
},
relationshipTypeTag: '<string>'
})
};
fetch('https://api.getcortexapp.com/api/v1/catalog-pages', 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://api.getcortexapp.com/api/v1/catalog-pages",
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([
'iconTag' => 'cortex',
'isDraft' => true,
'name' => '<string>',
'slug' => 'my-catalog',
'description' => '<string>',
'filter' => [
'groups' => [
'exclude' => [
'<string>'
],
'include' => [
'<string>'
]
],
'query' => '<string>',
'types' => [
'exclude' => [
'<string>'
],
'include' => [
'<string>'
]
]
],
'relationshipTypeTag' => '<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://api.getcortexapp.com/api/v1/catalog-pages"
payload := strings.NewReader("{\n \"iconTag\": \"cortex\",\n \"isDraft\": true,\n \"name\": \"<string>\",\n \"slug\": \"my-catalog\",\n \"description\": \"<string>\",\n \"filter\": {\n \"groups\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n },\n \"query\": \"<string>\",\n \"types\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n }\n },\n \"relationshipTypeTag\": \"<string>\"\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://api.getcortexapp.com/api/v1/catalog-pages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"iconTag\": \"cortex\",\n \"isDraft\": true,\n \"name\": \"<string>\",\n \"slug\": \"my-catalog\",\n \"description\": \"<string>\",\n \"filter\": {\n \"groups\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n },\n \"query\": \"<string>\",\n \"types\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n }\n },\n \"relationshipTypeTag\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getcortexapp.com/api/v1/catalog-pages")
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 \"iconTag\": \"cortex\",\n \"isDraft\": true,\n \"name\": \"<string>\",\n \"slug\": \"my-catalog\",\n \"description\": \"<string>\",\n \"filter\": {\n \"groups\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n },\n \"query\": \"<string>\",\n \"types\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n }\n },\n \"relationshipTypeTag\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"dateCreated": "2023-11-07T05:31:56Z",
"dateUpdated": "2023-11-07T05:31:56Z",
"iconTag": "cortex",
"isCortexManaged": true,
"isDraft": true,
"name": "<string>",
"slug": "my-catalog",
"type": "FILTER",
"description": "<string>",
"filter": {
"groups": {
"exclude": [
"<string>"
],
"include": [
"<string>"
]
},
"query": "<string>",
"types": {
"exclude": [
"<string>"
],
"include": [
"<string>"
]
}
},
"relationshipTypeTag": "<string>"
}{
"message": "<string>",
"type": "INTEGRATION_MISSING",
"details": "<string>",
"errorCode": "<string>",
"gatewayHttpStatus": 123,
"httpStatus": 123,
"requestId": "<string>"
}{
"message": "<string>",
"type": "INTEGRATION_MISSING",
"details": "<string>",
"errorCode": "<string>",
"gatewayHttpStatus": 123,
"httpStatus": 123,
"requestId": "<string>"
}{
"message": "<string>",
"type": "INTEGRATION_MISSING",
"details": "<string>",
"errorCode": "<string>",
"gatewayHttpStatus": 123,
"httpStatus": 123,
"requestId": "<string>"
}{
"status": 429,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"instance": "<string>",
"retryAfter": 1
}Create or replace a catalog
Creates a catalog, or replaces the existing one with the same slug.
API key must have the Edit catalogs permission.
curl --request POST \
--url https://api.getcortexapp.com/api/v1/catalog-pages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"iconTag": "cortex",
"isDraft": true,
"name": "<string>",
"slug": "my-catalog",
"description": "<string>",
"filter": {
"groups": {
"exclude": [
"<string>"
],
"include": [
"<string>"
]
},
"query": "<string>",
"types": {
"exclude": [
"<string>"
],
"include": [
"<string>"
]
}
},
"relationshipTypeTag": "<string>"
}
'import requests
url = "https://api.getcortexapp.com/api/v1/catalog-pages"
payload = {
"iconTag": "cortex",
"isDraft": True,
"name": "<string>",
"slug": "my-catalog",
"description": "<string>",
"filter": {
"groups": {
"exclude": ["<string>"],
"include": ["<string>"]
},
"query": "<string>",
"types": {
"exclude": ["<string>"],
"include": ["<string>"]
}
},
"relationshipTypeTag": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
iconTag: 'cortex',
isDraft: true,
name: '<string>',
slug: 'my-catalog',
description: '<string>',
filter: {
groups: {exclude: ['<string>'], include: ['<string>']},
query: '<string>',
types: {exclude: ['<string>'], include: ['<string>']}
},
relationshipTypeTag: '<string>'
})
};
fetch('https://api.getcortexapp.com/api/v1/catalog-pages', 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://api.getcortexapp.com/api/v1/catalog-pages",
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([
'iconTag' => 'cortex',
'isDraft' => true,
'name' => '<string>',
'slug' => 'my-catalog',
'description' => '<string>',
'filter' => [
'groups' => [
'exclude' => [
'<string>'
],
'include' => [
'<string>'
]
],
'query' => '<string>',
'types' => [
'exclude' => [
'<string>'
],
'include' => [
'<string>'
]
]
],
'relationshipTypeTag' => '<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://api.getcortexapp.com/api/v1/catalog-pages"
payload := strings.NewReader("{\n \"iconTag\": \"cortex\",\n \"isDraft\": true,\n \"name\": \"<string>\",\n \"slug\": \"my-catalog\",\n \"description\": \"<string>\",\n \"filter\": {\n \"groups\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n },\n \"query\": \"<string>\",\n \"types\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n }\n },\n \"relationshipTypeTag\": \"<string>\"\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://api.getcortexapp.com/api/v1/catalog-pages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"iconTag\": \"cortex\",\n \"isDraft\": true,\n \"name\": \"<string>\",\n \"slug\": \"my-catalog\",\n \"description\": \"<string>\",\n \"filter\": {\n \"groups\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n },\n \"query\": \"<string>\",\n \"types\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n }\n },\n \"relationshipTypeTag\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getcortexapp.com/api/v1/catalog-pages")
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 \"iconTag\": \"cortex\",\n \"isDraft\": true,\n \"name\": \"<string>\",\n \"slug\": \"my-catalog\",\n \"description\": \"<string>\",\n \"filter\": {\n \"groups\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n },\n \"query\": \"<string>\",\n \"types\": {\n \"exclude\": [\n \"<string>\"\n ],\n \"include\": [\n \"<string>\"\n ]\n }\n },\n \"relationshipTypeTag\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"dateCreated": "2023-11-07T05:31:56Z",
"dateUpdated": "2023-11-07T05:31:56Z",
"iconTag": "cortex",
"isCortexManaged": true,
"isDraft": true,
"name": "<string>",
"slug": "my-catalog",
"type": "FILTER",
"description": "<string>",
"filter": {
"groups": {
"exclude": [
"<string>"
],
"include": [
"<string>"
]
},
"query": "<string>",
"types": {
"exclude": [
"<string>"
],
"include": [
"<string>"
]
}
},
"relationshipTypeTag": "<string>"
}{
"message": "<string>",
"type": "INTEGRATION_MISSING",
"details": "<string>",
"errorCode": "<string>",
"gatewayHttpStatus": 123,
"httpStatus": 123,
"requestId": "<string>"
}{
"message": "<string>",
"type": "INTEGRATION_MISSING",
"details": "<string>",
"errorCode": "<string>",
"gatewayHttpStatus": 123,
"httpStatus": 123,
"requestId": "<string>"
}{
"message": "<string>",
"type": "INTEGRATION_MISSING",
"details": "<string>",
"errorCode": "<string>",
"gatewayHttpStatus": 123,
"httpStatus": 123,
"requestId": "<string>"
}{
"status": 429,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"instance": "<string>",
"retryAfter": 1
}Authorizations
All requests to the Cortex API need to provide an Authorization: Bearer <token> header, where <token> is an API key created in the Settings page of your workspace.
Body
Tag of the icon shown for the catalog
"cortex"
Whether the catalog is a draft
Name of the catalog
Unique identifier for the catalog
"my-catalog"
Optional description of the catalog
Filter that selects the entities in the catalog, for FILTER catalogs
Show child attributes
Show child attributes
Tag of the relationship type the catalog is built from, for a RELATIONSHIP_TYPE catalog
What the catalog is built from. Optional: inferred as FILTER when filter is set and RELATIONSHIP_TYPE when relationshipTypeTag is set. Must be set explicitly to DOMAIN for a domain catalog
FILTER, RELATIONSHIP_TYPE, DOMAIN Response
Successfully created or replaced the catalog
Time the catalog was created
Time the catalog was last updated
Tag of the icon shown for the catalog
"cortex"
Whether the catalog is managed by Cortex. Cortex-managed catalogs cannot be modified or deleted
Whether the catalog is a draft
Name of the catalog
Unique identifier for the catalog
"my-catalog"
What the catalog is built from. Optional: inferred as FILTER when filter is set and RELATIONSHIP_TYPE when relationshipTypeTag is set. Must be set explicitly to DOMAIN for a domain catalog
FILTER, RELATIONSHIP_TYPE, DOMAIN Optional description of the catalog
Filter that selects the entities in the catalog, for FILTER catalogs
Show child attributes
Show child attributes
Tag of the relationship type the catalog is built from, for RELATIONSHIP_TYPE catalogs