diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index a0bd4fdc1ae..bf9898130de 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -31,17 +31,27 @@ on: - tagscanarymerge - fixlabels - interceptapis - - mlh-965 - - mlh-498-use-spec-store-master + - tags_intg_test jobs: build: - runs-on: ubuntu-latest + + # Add permissions for Docker + permissions: + contents: read + packages: write steps: - uses: actions/checkout@v3 + + # Set up Docker + - name: Set up Docker + uses: docker/setup-buildx-action@v2 + with: + driver-opts: image=moby/buildkit:master + install: true - name: Set up JDK 17 uses: actions/setup-java@v1 @@ -51,6 +61,12 @@ jobs: - name: Print JDK version run: java -version + # Verify Docker is available + - name: Verify Docker + run: | + docker --version + docker info + - name: Cache Maven packages uses: actions/cache@v3 with: @@ -78,6 +94,16 @@ jobs: echo "build without dashboard" chmod +x ./build.sh && ./build.sh + - name: Run Integration Tests + env: + # Configure Testcontainers for GitHub Actions + TESTCONTAINERS_RYUK_DISABLED: true + TESTCONTAINERS_CHECKS_DISABLE: true + DOCKER_HOST: unix:///var/run/docker.sock + run: | + echo "Running integration tests..." + chmod +x ./run-integration-tests.sh && ./run-integration-tests.sh + - name: Get Repository Name run: echo "REPOSITORY_NAME=`echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//"`" >> $GITHUB_ENV shell: bash diff --git a/build.sh b/build.sh index 074b7060add..f6fa5acd02d 100755 --- a/build.sh +++ b/build.sh @@ -23,7 +23,7 @@ unzip -o keycloak-15.0.2.1.zip -d ~/.m2/repository/org echo "Maven Building" -mvn -Dmaven.test.skip -DskipTests -Drat.skip=true -DskipOverlay -DskipEnunciate=true package -Pdist +mvn -Dmaven.test.skip -DskipTests -Drat.skip=true -DskipOverlay -DskipEnunciate=true install -Pdist echo "[DEBUG listing distro/target" ls distro/target diff --git a/common/src/main/java/org/apache/atlas/service/redis/AbstractRedisService.java b/common/src/main/java/org/apache/atlas/service/redis/AbstractRedisService.java index 2d7372279c3..491d733edc9 100644 --- a/common/src/main/java/org/apache/atlas/service/redis/AbstractRedisService.java +++ b/common/src/main/java/org/apache/atlas/service/redis/AbstractRedisService.java @@ -32,6 +32,7 @@ public abstract class AbstractRedisService implements RedisService { private static final String ATLAS_REDIS_LOCK_WAIT_TIME_MS = "atlas.redis.lock.wait_time.ms"; private static final String ATLAS_REDIS_LOCK_WATCHDOG_TIMEOUT_MS = "atlas.redis.lock.watchdog_timeout.ms"; private static final String ATLAS_REDIS_LEASE_TIME_MS = "atlas.redis.lease_time.ms"; + private static final String CHECK_SENTINELS_LIST = "atlas.redis.sentinel.check_list.enabled"; private static final int DEFAULT_REDIS_WAIT_TIME_MS = 15_000; private static final int DEFAULT_REDIS_LOCK_WATCHDOG_TIMEOUT_MS = 600_000; private static final int DEFAULT_REDIS_LEASE_TIME_MS = 60_000; @@ -48,6 +49,7 @@ public abstract class AbstractRedisService implements RedisService { long waitTimeInMS; long leaseTimeInMS; long watchdogTimeoutInMS; + boolean checkSentinelsList; // Inner class to track lock information private static class LockInfo { @@ -255,7 +257,7 @@ Config getCacheImplConfig() { config.useSentinelServers() .setClientName(ATLAS_METASTORE_SERVICE+"-redisCache") .setReadMode(ReadMode.MASTER_SLAVE) - .setCheckSentinelsList(false) + .setCheckSentinelsList(checkSentinelsList) .setKeepAlive(true) .setMasterConnectionMinimumIdleSize(10) .setMasterConnectionPoolSize(20) diff --git a/common/src/main/java/org/apache/atlas/service/redis/RedisServiceImpl.java b/common/src/main/java/org/apache/atlas/service/redis/RedisServiceImpl.java index 1f1c97c4923..baacba46792 100644 --- a/common/src/main/java/org/apache/atlas/service/redis/RedisServiceImpl.java +++ b/common/src/main/java/org/apache/atlas/service/redis/RedisServiceImpl.java @@ -1,22 +1,24 @@ package org.apache.atlas.service.redis; import org.apache.atlas.AtlasException; -import org.apache.atlas.annotation.ConditionalOnAtlasProperty; import org.redisson.Redisson; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @Component -@ConditionalOnAtlasProperty(property = "atlas.redis.service.impl") +@Profile("!local") public class RedisServiceImpl extends AbstractRedisService{ private static final Logger LOG = LoggerFactory.getLogger(RedisServiceImpl.class); @PostConstruct public void init() throws AtlasException { + LOG.info("Initializing RedisServiceImpl"); + redisClient = Redisson.create(getProdConfig()); redisCacheClient = Redisson.create(getCacheImplConfig()); LOG.debug("Sentinel redis client created successfully."); diff --git a/common/src/main/java/org/apache/atlas/service/redis/RedisServiceLocalImpl.java b/common/src/main/java/org/apache/atlas/service/redis/RedisServiceLocalImpl.java index c69a151a7d2..0ca4cf6eb3c 100644 --- a/common/src/main/java/org/apache/atlas/service/redis/RedisServiceLocalImpl.java +++ b/common/src/main/java/org/apache/atlas/service/redis/RedisServiceLocalImpl.java @@ -1,22 +1,24 @@ package org.apache.atlas.service.redis; import org.apache.atlas.AtlasException; -import org.apache.atlas.annotation.ConditionalOnAtlasProperty; import org.redisson.Redisson; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @Component -@ConditionalOnAtlasProperty(property = "atlas.redis.service.impl") +@Profile("local") public class RedisServiceLocalImpl extends AbstractRedisService { private static final Logger LOG = LoggerFactory.getLogger(RedisServiceLocalImpl.class); @PostConstruct public void init() throws AtlasException { + LOG.info("Initializing RedisServiceLocalImpl"); + redisClient = Redisson.create(getLocalConfig()); redisCacheClient = Redisson.create(getLocalConfig()); LOG.info("Local redis client created successfully."); diff --git a/pom.xml b/pom.xml index 3c77a5b947b..ee7970c12fb 100644 --- a/pom.xml +++ b/pom.xml @@ -1813,7 +1813,7 @@ org.apache.maven.surefire - surefire-testng + surefire-junit-platform ${surefire.version} diff --git a/repository/src/test/java/org/apache/atlas/repository/integration/TestEntityStreamUtil.java b/repository/src/test/java/org/apache/atlas/repository/integration/TestEntityStreamUtil.java new file mode 100644 index 00000000000..e3b7b301390 --- /dev/null +++ b/repository/src/test/java/org/apache/atlas/repository/integration/TestEntityStreamUtil.java @@ -0,0 +1,77 @@ +package org.apache.atlas.repository.integration; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import org.apache.atlas.model.instance.AtlasEntity; +import org.apache.atlas.model.instance.AtlasEntityHeader; +import org.apache.atlas.model.instance.AtlasEntityHeaders; +import org.apache.atlas.model.instance.EntityMutationResponse; +import org.apache.atlas.repository.store.graph.v2.AtlasEntityStream; +import org.apache.atlas.repository.store.graph.v2.EntityStream; +import org.apache.atlas.type.AtlasTypeRegistry; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class TestEntityStreamUtil { + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + public static class EntityCreationRequest { + private final String jsonRequest; + private List entities; + private Map guidHeaderMap; + + public EntityCreationRequest(String jsonRequest) { + this.jsonRequest = jsonRequest; + this.entities = new ArrayList<>(); + this.guidHeaderMap = new HashMap<>(); + } + + public EntityStream toEntityStream(AtlasTypeRegistry typeRegistry) throws IOException { + JsonNode root = OBJECT_MAPPER.readTree(jsonRequest); + ArrayNode entitiesNode = (ArrayNode) root.get("entities"); + + for (JsonNode entityNode : entitiesNode) { + AtlasEntity.AtlasEntityWithExtInfo entityWithExtInfo = new AtlasEntity.AtlasEntityWithExtInfo(); + AtlasEntity entity = new AtlasEntity(); + + entity.setTypeName(entityNode.get("typeName").asText()); + + // Handle attributes + JsonNode attributesNode = entityNode.get("attributes"); + Map attributes = new HashMap<>(); + attributesNode.fields().forEachRemaining(field -> + attributes.put(field.getKey(), field.getValue().asText()) + ); + entity.setAttributes(attributes); + + entityWithExtInfo.setEntity(entity); + entities.add(entity); + } + + return new AtlasEntityStream(entities); + } + + public void updateWithMutationResponse(EntityMutationResponse response) { + // Update entities with assigned GUIDs + for (AtlasEntityHeader header : response.getCreatedEntities()) { + guidHeaderMap.put(header.getGuid(), header); + } + } + + public AtlasEntityHeaders toEntityHeaders() { + AtlasEntityHeaders headers = new AtlasEntityHeaders(); + headers.setGuidHeaderMap(guidHeaderMap); + return headers; + } + } + + public static EntityCreationRequest fromJson(String json) { + return new EntityCreationRequest(json); + } + +} \ No newline at end of file diff --git a/run-integration-tests.sh b/run-integration-tests.sh new file mode 100644 index 00000000000..18088693607 --- /dev/null +++ b/run-integration-tests.sh @@ -0,0 +1,124 @@ +#!/bin/bash +# run-integration-tests.sh + +set -e + +echo "============================================" +echo "Atlas Integration Tests Runner" +echo "============================================" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color +export JAVA_HOME=`/usr/libexec/java_home -v 17` # Set Java 17 as JAVA_HOME +# Check if Docker is running +if ! docker info > /dev/null 2>&1; then + echo -e "${RED}Docker is not running. Please start Docker first.${NC}" + exit 1 +fi + +# Parse arguments +SKIP_BUILD=false +KEEP_CONTAINERS=false +DEBUG=false + +while [[ "$#" -gt 0 ]]; do + case $1 in + --skip-build) SKIP_BUILD=true ;; + --keep-containers) KEEP_CONTAINERS=true ;; + --debug) DEBUG=true ;; + -h|--help) + echo "Usage: $0 [options]" + echo "Options:" + echo " --skip-build Skip building Atlas WAR and Docker image" + echo " --keep-containers Keep containers running after tests" + echo " --debug Enable debug logging" + echo " -h, --help Show this help message" + exit 0 + ;; + *) echo "Unknown parameter: $1"; exit 1 ;; + esac + shift +done + +# Step 1: Build Docker image +echo -e "${YELLOW}Building Atlas Docker image...${NC}" +docker buildx build --load -t atlanhq/atlas:test . + +if [ $? -ne 0 ]; then + echo -e "${RED}Failed to build Docker image${NC}" + exit 1 +fi +echo -e "${GREEN}Docker image built successfully${NC}" + +# Step 2: Clean up any existing test containers +echo -e "${YELLOW}Cleaning up existing test containers...${NC}" +docker rm -f atlas-test-zookeeper atlas-test-kafka atlas-test-cassandra \ + atlas-test-elasticsearch atlas-test-redis atlas-test-atlas 2>/dev/null || true + +# Step 3: Set test properties +export TESTCONTAINERS_REUSE_ENABLE=true +export TESTCONTAINERS_RYUK_DISABLED=$KEEP_CONTAINERS + +if [ "$DEBUG" = true ]; then + export TESTCONTAINERS_DEBUG=true + MAVEN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" +fi + +echo "Listing docker images" +docker image ls + +# Step 4: Run integration tests +echo -e "${YELLOW}Running integration tests...${NC}" + +if [ "$DEBUG" = true ]; then + mvn test -pl webapp -Dtest=AtlasDockerIntegrationTest \ + -Dorg.slf4j.simpleLogger.defaultLogLevel=debug \ + -Dorg.testcontainers.log.level=DEBUG -Dsurefire.useFile=false +else + mvn test -pl webapp -Dtest=AtlasDockerIntegrationTest -Dsurefire.useFile=false +fi + +TEST_RESULT=$? + +# Step 5: Collect logs if tests failed +if [ $TEST_RESULT -ne 0 ]; then + echo -e "${RED}Tests failed! Collecting logs...${NC}" + + mkdir -p target/test-logs + + # Get container logs + for container in $(docker ps -a --filter "name=atlas-test" --format "{{.Names}}"); do + echo "Collecting logs from $container..." + docker logs $container > "target/test-logs/${container}.log" 2>&1 + done + + echo -e "${YELLOW}Logs saved to target/test-logs/${NC}" +fi + +# Step 6: Clean up containers if not keeping them +if [ "$KEEP_CONTAINERS" = false ]; then + echo -e "${YELLOW}Cleaning up test containers...${NC}" + docker rm -f $(docker ps -a --filter "name=atlas-test" --format "{{.Names}}") 2>/dev/null || true +else + echo -e "${YELLOW}Keeping containers running (--keep-containers flag set)${NC}" + echo "You can connect to Atlas at: http://localhost:21000" + echo "To stop containers manually, run:" + echo " docker rm -f \$(docker ps -a --filter 'name=atlas-test' --format '{{.Names}}')" +fi + +# Step 7: Report results +if [ $TEST_RESULT -eq 0 ]; then + echo -e "${GREEN}============================================${NC}" + echo -e "${GREEN}Integration tests completed successfully!${NC}" + echo -e "${GREEN}============================================${NC}" + exit 0 +else + echo -e "${RED}============================================${NC}" + echo -e "${RED}Integration tests failed!${NC}" + echo -e "${RED}Check target/test-logs for details${NC}" + echo -e "${RED}============================================${NC}" + exit 1 +fi \ No newline at end of file diff --git a/webapp/pom.xml b/webapp/pom.xml index cf17b1f9785..5935cfebe4a 100755 --- a/webapp/pom.xml +++ b/webapp/pom.xml @@ -140,6 +140,81 @@ + + + org.testcontainers + testcontainers + 1.21.3 + test + + + org.testcontainers + junit-jupiter + 1.21.3 + test + + + org.testcontainers + elasticsearch + 1.21.3 + test + + + org.testcontainers + cassandra + 1.21.3 + test + + + org.testcontainers + kafka + 1.21.3 + test + + + com.redis + testcontainers-redis + 2.2.2 + test + + + + org.apache.atlas + atlas-repository + ${project.version} + test-jar + test + + + + org.apache.atlas + atlas-intg + ${project.version} + test-jar + test + + + + org.apache.atlas + atlas-graphdb-common + ${project.version} + tests + test + + + + org.junit.jupiter + junit-jupiter-api + ${junit.jupiter.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.version} + test + + org.apache.atlas atlas-intg @@ -305,10 +380,10 @@ mockito-all - + com.google.inject @@ -898,6 +973,15 @@ + + + src/test/resources + + **/*.properties + + true + + diff --git a/webapp/src/test/java/org/apache/atlas/web/integration/AtlasDockerIntegrationTest.java b/webapp/src/test/java/org/apache/atlas/web/integration/AtlasDockerIntegrationTest.java new file mode 100644 index 00000000000..b30b466c27f --- /dev/null +++ b/webapp/src/test/java/org/apache/atlas/web/integration/AtlasDockerIntegrationTest.java @@ -0,0 +1,687 @@ +package org.apache.atlas.web.integration; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.junit.jupiter.api.*; +import org.junit.jupiter.api.extension.ExtendWith; +import org.testcontainers.junit.jupiter.TestcontainersExtension; + +import java.time.Duration; +import java.util.Collections; +import java.util.Properties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.testcontainers.containers.BindMode; +import org.testcontainers.containers.CassandraContainer; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.KafkaContainer; +import org.testcontainers.containers.Network; +import org.testcontainers.containers.output.Slf4jLogConsumer; +import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.elasticsearch.ElasticsearchContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; + +import java.io.File; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Integration test for Apache Atlas using Docker containers with local deploy directory. + */ +@Testcontainers +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +@ExtendWith(TestcontainersExtension.class) +public class AtlasDockerIntegrationTest { + + private static final Logger LOG = LoggerFactory.getLogger(AtlasDockerIntegrationTest.class); + private static final Network network = Network.newNetwork(); + private static final ObjectMapper mapper = new ObjectMapper(); + + private HttpClient httpClient; + private String atlasBaseUrl; + + // Define containers + @Container + static GenericContainer zookeeper = new GenericContainer<>("zookeeper:3.7") + .withNetwork(network) + .withNetworkAliases("zookeeper") + .withExposedPorts(2181) + .withEnv("ZOO_MY_ID", "1"); + + @Container + static KafkaContainer kafka = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:7.4.0")) + .withNetwork(network) + .withNetworkAliases("kafka") + .withExternalZookeeper("zookeeper:2181") + .dependsOn(zookeeper); + + @Container + static CassandraContainer cassandra = new CassandraContainer<>("cassandra:2.1") + .withNetwork(network) + .withNetworkAliases("cassandra") + .withStartupTimeout(Duration.ofMinutes(3)) + .withEnv("CASSANDRA_CLUSTER_NAME", "atlas-cluster") + .withEnv("CASSANDRA_DC", "datacenter1"); + + @Container + static ElasticsearchContainer elasticsearch = new ElasticsearchContainer( + DockerImageName.parse("elasticsearch:7.16.2")) + .withNetwork(network) + .withNetworkAliases("elasticsearch") + .withEnv("discovery.type", "single-node") + .withEnv("xpack.security.enabled", "false") + .withEnv("ES_JAVA_OPTS", "-Xms512m -Xmx512m"); + + @Container + static GenericContainer redis = new GenericContainer<>("redis:6.2.14") + .withNetwork(network) + .withNetworkAliases("redis") + .withCommand("redis-server", "--requirepass", "", "--protected-mode", "no") + .withExposedPorts(6379); + + // Atlas container with volume mount + @Container + static GenericContainer atlas = createAtlasContainer(); + + private static GenericContainer createAtlasContainer() { + // Get the deploy directory path + String deployPath = getDeployDirectoryPath(); + LOG.info("Using deploy directory: {}", deployPath); + + // Verify deploy directory exists + File deployDir = new File(deployPath); + if (!deployDir.exists() || !deployDir.isDirectory()) { + throw new IllegalStateException("Deploy directory not found: " + deployPath + + ". Please ensure the deploy directory exists with conf, data, elasticsearch, etc."); + } + + return new GenericContainer<>(DockerImageName.parse("atlanhq/atlas:test")) + .withNetwork(network) + .withNetworkAliases("atlas") + .withExposedPorts(21000) + //# Mount the entire deploy directory + .withFileSystemBind(deployPath, "/opt/atlas-deploy", BindMode.READ_WRITE) + // Mount specific subdirectories to expected locations (READ_WRITE for conf) + .withFileSystemBind(deployPath + "/conf", "/opt/apache-atlas/conf-orig", BindMode.READ_ONLY) + .withFileSystemBind(deployPath + "/elasticsearch", "/opt/apache-atlas/elasticsearch", BindMode.READ_ONLY) + .withFileSystemBind(deployPath + "/models", "/opt/apache-atlas/models", BindMode.READ_ONLY) + .withEnv(getAtlasEnvironment()) + .withCommand("/bin/bash", "-c", createStartupScript()) + .waitingFor( + Wait.forListeningPort() + .withStartupTimeout(Duration.ofMinutes(2)) + ) + .withLogConsumer(new Slf4jLogConsumer(LOG).withPrefix("ATLAS")) + .dependsOn(kafka, cassandra, elasticsearch, redis, zookeeper); + } + + private static String getDeployDirectoryPath() { + // Try different paths where deploy directory might be + String projectRootPath = System.getProperty("user.dir"); + String[] possiblePaths = { + projectRootPath+ "/src/test/resources/deploy" + }; + + for (String path : possiblePaths) { + if (path != null) { + File dir = new File(path); + if (dir.exists() && dir.isDirectory()) { + // Check if it has expected subdirectories + if (new File(dir, "conf").exists() && + new File(dir, "elasticsearch").exists()) { + return dir.getAbsolutePath(); + } + } + } + } + + throw new IllegalStateException( + "Could not find deploy directory. Please set -Datlas.deploy.dir=/path/to/deploy or ensure deploy directory exists in project root" + ); + } + + private static Map getAtlasEnvironment() { + Map env = new HashMap<>(); + + // Atlas home and configuration + env.put("ATLAS_HOME", "/opt/apache-atlas"); + env.put("ATLAS_CONF", "/opt/apache-atlas/conf"); + env.put("ATLAS_DATA", "/opt/atlas-deploy/data"); + env.put("ATLAS_LOG_DIR", "/opt/atlas-deploy/logs"); + + // Tell Atlas we're managing external services + env.put("MANAGE_LOCAL_HBASE", "false"); + env.put("MANAGE_LOCAL_SOLR", "false"); + env.put("MANAGE_LOCAL_ELASTICSEARCH", "false"); + env.put("MANAGE_LOCAL_CASSANDRA", "false"); + + // JVM options + env.put("ATLAS_SERVER_OPTS", "-server -Xms1g -Xmx2g"); + env.put("ATLAS_SERVER_HEAP", "-Xms1g -Xmx2g"); + + // Java 17 options + env.put("JAVA_HOME", "/usr/lib/jvm/java-17-openjdk-amd64"); + env.put("JDK_JAVA_OPTIONS", "--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED"); + + env.put("SPRING_PROFILES_ACTIVE", "local"); + + // Set atlas.home system property + env.put("ATLAS_OPTS", "-Datlas.home=/opt/apache-atlas -Datlas.conf=/opt/apache-atlas/conf -Datlas.data=/opt/atlas-deploy/data -Datlas.log.dir=/opt/atlas-deploy/logs"); + + return env; + } + + private static String createStartupScript() { + return """ + #!/bin/bash + set -e + + # Wait for dependencies + echo "Waiting for Cassandra..." + while ! nc -z cassandra 9042; do sleep 2; done + echo "Cassandra is ready" + + echo "Waiting for Elasticsearch..." + while ! curl -s elasticsearch:9200 > /dev/null; do sleep 2; done + echo "Elasticsearch is ready" + + echo "Waiting for Kafka..." + while ! nc -z kafka 9092; do sleep 2; done + echo "Kafka is ready" + + echo "Waiting for Redis..." + while ! nc -z redis 6379; do sleep 2; done + echo "Redis is ready" + + # Create required directories + mkdir -p /opt/atlas-deploy/logs + mkdir -p /opt/atlas-deploy/data + mkdir -p /opt/apache-atlas/conf + mkdir -p /opt/apache-atlas/server/webapp + + # Copy configuration from read-only mount to writable location + echo "Copying configuration files..." + cp -r /opt/apache-atlas/conf-orig/* /opt/apache-atlas/conf/ + + # Fix atlas-env.sh by replacing template variables + echo "Fixing atlas-env.sh..." + sed -i 's/${hbase.embedded}/false/g' /opt/apache-atlas/conf/atlas-env.sh + sed -i 's/${solr.embedded}/false/g' /opt/apache-atlas/conf/atlas-env.sh + sed -i 's/${cassandra.embedded}/false/g' /opt/apache-atlas/conf/atlas-env.sh + sed -i 's/${elasticsearch.managed}/false/g' /opt/apache-atlas/conf/atlas-env.sh + + # List what we have + echo "Configuration directory contents:" + ls -la /opt/apache-atlas/conf/ + + echo "Elasticsearch directory contents:" + ls -la /opt/apache-atlas/elasticsearch/ + + # Update atlas-application.properties with container service addresses + cat >> /opt/apache-atlas/conf/atlas-application.properties <<'EOF' + + # Container service overrides + atlas.graph.storage.backend=cql + atlas.graph.storage.hostname=cassandra + atlas.graph.storage.cql.port=9042 + atlas.graph.storage.cql.keyspace=atlas + + atlas.graph.index.search.backend=elasticsearch + atlas.graph.index.search.hostname=elasticsearch:9200 + atlas.graph.index.search.elasticsearch.rest-port=9200 + + atlas.kafka.bootstrap.servers=kafka:9092 + atlas.kafka.zookeeper.connect=zookeeper:2181 + + # Redis configuration + atlas.redis.service.impl = org.apache.atlas.service.redis.RedisServiceImpl + atlas.redis.url = redis://redis:6379 + atlas.redis.sentinel.enabled = false + atlas.redis.sentinel.check_list.enabled = false + + atlas.server.bind.address=0.0.0.0 + atlas.authentication.method.file=true + atlas.authentication.method.kerberos=false + + # Disable HBase transaction logging since we're using Cassandra + atlas.graph.tx.log.tx=false + atlas.graph.tx.recovery.verbose=false + + # Disable HBase audit + atlas.audit.hbase.zookeeper.quorum= + atlas.EntityAuditRepository.impl=org.apache.atlas.repository.audit.NoopEntityAuditRepository + + atlas.redis.sentinel.check_list.enabled=false + atlas.authorizer.impl=none + #atlas.authorizer.simple.authz.policy.file=deploy/conf/atlas-simple-authz-policy.json + atlas.authentication.method.file=true + + atlas.enableTLS=false + atlas.authentication.method.kerberos=false + atlas.redis.service.impl = org.apache.atlas.service.redis.RedisServiceImpl + + atlas.kafka.zookeeper.session.timeout.ms=400 + atlas.kafka.zookeeper.connection.timeout.ms=200 + atlas.kafka.zookeeper.sync.time.ms=20 + atlas.kafka.auto.commit.interval.ms=1000 + atlas.kafka.hook.group.id=atlas + atlas.kafka.enable.auto.commit=false + atlas.kafka.auto.offset.reset=earliest + atlas.kafka.session.timeout.ms=30000 + atlas.kafka.offsets.topic.replication.factor=1 + atlas.kafka.poll.timeout.ms=1000 + atlas.notification.create.topics=true + atlas.notification.replicas=1 + atlas.notification.topics=ATLAS_ENTITIES + atlas.notification.log.failed.messages=true + atlas.notification.consumer.retry.interval=500 + atlas.notification.hook.retry.interval=1000 + + atlas.EntityAuditRepository.impl=org.apache.atlas.repository.audit.NoopEntityAuditRepository + atlas.EntityAuditRepositorySearch.impl=org.apache.atlas.repository.audit.ESBasedAuditRepository + atlas.EntityAuditRepository.keyspace=atlas_audit + atlas.EntityAuditRepository.replicationFactor=1 + + atlas.authentication.method.ldap.type=none + #### user credentials file + atlas.authentication.method.file.filename=/opt/apache-atlas/conf/users-credentials.properties + atlas.authentication.method.file=true + atlas.authentication.method.ldap=false + atlas.authentication.method.keycloak=false + atlas.authentication.method.pam=false + atlas.authentication.method.keycloak=false + #atlas.authentication.method.keycloak.file=${sys:atlas.home}/conf/keycloak.json + #atlas.authentication.method.keycloak.ugi-groups=false + #atlas.authentication.method.keycloak.groups_claim=groups + atlas.http.authentication.enabled=false + EOF + + # Export required environment variables + export ATLAS_HOME=/opt/apache-atlas + export ATLAS_CONF=/opt/apache-atlas/conf + export ATLAS_DATA=/opt/atlas-deploy/data + export ATLAS_LOG_DIR=/opt/atlas-deploy/logs + export ATLAS_EXPANDED_WEBAPP_DIR=/opt/apache-atlas/server/webapp + export MANAGE_LOCAL_HBASE=false + export MANAGE_LOCAL_SOLR=false + export MANAGE_LOCAL_ELASTICSEARCH=false + export MANAGE_LOCAL_CASSANDRA=false + export MANAGE_EMBEDDED_CASSANDRA=false + + # Check Java installation + echo "Checking Java..." + which java + java -version + + # Check Python installation + echo "Checking Python..." + which python || which python2 + python --version || python2 --version + + # List Atlas bin directory + echo "Atlas bin directory:" + ls -la /opt/apache-atlas/bin/ + + # Check if webapp exists + echo "Checking for webapp..." + ls -la /opt/apache-atlas/server/ || echo "Server directory not found" + ls -la /opt/apache-atlas/ | grep -E "(war|jar)" || echo "No WAR/JAR files in atlas root" + + if [ -d "/opt/apache-atlas/server/webapp/atlas" ]; then + echo "Webapp found at /opt/apache-atlas/server/webapp/atlas" + ls -la /opt/apache-atlas/server/webapp/atlas/ + else + echo "Webapp not found, looking for war file..." + find /opt/apache-atlas -name "*.war" -type f || echo "No WAR files found" + fi + + # Start Atlas + cd /opt/apache-atlas + echo "Starting Apache Atlas..." + + # Check if Java is available + if ! which java > /dev/null 2>&1; then + echo "ERROR: Java not found in PATH" + exit 1 + fi + + echo "Java found at: $(which java)" + java -version + + # Build classpath + echo "Building classpath..." + CP="/opt/apache-atlas/conf" + + # Add server webapp JARs + if [ -d "/opt/apache-atlas/server/webapp/atlas/WEB-INF/lib" ]; then + echo "Adding webapp JARs..." + for jar in /opt/apache-atlas/server/webapp/atlas/WEB-INF/lib/*.jar; do + CP="$CP:$jar" + done + elif [ -f "/opt/apache-atlas/server/webapp/atlas.war" ]; then + echo "Found WAR file, extracting..." + mkdir -p /opt/apache-atlas/server/webapp/atlas + cd /opt/apache-atlas/server/webapp/atlas + jar xf ../atlas.war + cd /opt/apache-atlas + for jar in /opt/apache-atlas/server/webapp/atlas/WEB-INF/lib/*.jar; do + CP="$CP:$jar" + done + else + echo "WARNING: No webapp found!" + # Try to find JARs in other locations + find /opt/apache-atlas -name "*.jar" -type f | head -10 + fi + + # Add lib JARs if they exist + if [ -d "/opt/apache-atlas/lib" ]; then + echo "Adding lib JARs..." + for jar in /opt/apache-atlas/lib/*.jar; do + CP="$CP:$jar" + done + fi + + # Add libext JARs if they exist + if [ -d "/opt/apache-atlas/libext" ]; then + echo "Adding libext JARs..." + for jar in /opt/apache-atlas/libext/*.jar; do + CP="$CP:$jar" + done + fi + + # Add any JARs from the distro directory + if [ -d "/opt/apache-atlas/distro" ]; then + echo "Checking distro directory..." + for jar in /opt/apache-atlas/distro/*.jar; do + if [ -f "$jar" ]; then + CP="$CP:$jar" + fi + done + fi + + echo "Starting Atlas with Java directly..." + echo "Classpath length: $(echo $CP | wc -c) characters" + + /usr/bin/java -Datlas.log.dir=/opt/apache-atlas/logs -Datlas.log.file=atlas_kafka_setup.log -Datlas.home=/opt/apache-atlas -Datlas.conf=/opt/apache-atlas/conf -Datlas.data=/opt/apache-atlas/data -classpath /opt/apache-atlas/conf:/opt/apache-atlas/server/webapp/atlas/WEB-INF/classes:/opt/apache-atlas/server/webapp/atlas/WEB-INF/lib/*:/opt/apache-atlas/libext/* org.apache.atlas.hook.AtlasTopicCreator ATLAS_ENTITIES + + # Start Atlas with exec to replace the shell process + exec java \ + -Datlas.log.dir=/opt/atlas-deploy/logs \ + -Datlas.log.file=atlas.log \ + -Datlas.home=/opt/apache-atlas \ + -Datlas.conf=/opt/apache-atlas/conf \ + -Datlas.data=/opt/atlas-deploy/data \ + -Dlog4j.configuration=atlas-log4j.xml \ + -Djava.net.preferIPv4Stack=true \ + -server \ + -Xms1g -Xmx2g \ + --add-opens java.base/java.lang=ALL-UNNAMED \ + --add-opens java.base/java.nio=ALL-UNNAMED \ + --add-opens java.base/sun.nio.ch=ALL-UNNAMED \ + -cp "$CP" \ + org.apache.atlas.Atlas \ + -app /opt/apache-atlas/server/webapp/atlas + """; + } + + @BeforeAll + void setup() { + LOG.info("Setting up test environment..."); + // Setup HTTP client + httpClient = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds(10)) + .build(); + + // Setup base URL + int mappedPort = atlas.getMappedPort(21000); + atlasBaseUrl = String.format("http://localhost:%d/api/atlas/v2", mappedPort); + + LOG.info("Atlas URL: {}", atlasBaseUrl); + LOG.info("Atlas container is running: {}", atlas.isRunning()); + + // Wait for Atlas API to be ready + waitForAtlasReady(); + } + + private void waitForAtlasReady() { + LOG.info("Waiting for Atlas API to be ready..."); + int maxRetries = 5; + + for (int i = 0; i < maxRetries; i++) { + try { + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(atlasBaseUrl + "/types")) + .header("Accept", "application/json") + .GET() + .timeout(Duration.ofSeconds(5)) + .build(); + + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + + LOG.debug("Atlas API check attempt {}: status {}", i, response.statusCode()); + + if (response.statusCode() == 200 || response.statusCode() == 401) { + LOG.info("Atlas API is ready!"); + return; + } + } catch (Exception e) { + LOG.debug("Atlas API not ready yet (attempt {}): {}", i, e.getMessage()); + } + + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + LOG.error("Atlas failed to become ready. Container logs:"); + LOG.error(atlas.getLogs()); + + throw new RuntimeException("Atlas API failed to become ready after " + maxRetries + " attempts"); + } + + @Test + @Order(1) + @DisplayName("Test Atlas Health Check") + void testHealthCheck() throws Exception { + LOG.info("Testing Atlas health check..."); + + // Create basic auth header + String auth = "admin:admin"; + String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes()); + + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(atlasBaseUrl.replace("/api/atlas/v2", "") + "/api/atlas/admin/version")) + .header("Authorization", "Basic "+encodedAuth) + .GET() + .timeout(Duration.ofSeconds(10)) + .build(); + + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + + LOG.info("Health check response: {} - {}", response.statusCode(), response.body()); + assertEquals(200, response.statusCode()); + } + + @Test + @Order(2) + @DisplayName("Test Get Types") + void testGetTypes() throws Exception { + LOG.info("Testing get types..."); + // Create basic auth header + String auth = "admin:admin"; + String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes()); + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(atlasBaseUrl + "/types/typedefs")) + .header("Accept", "application/json") + .header("Authorization", "Basic "+encodedAuth) + .GET() + .timeout(Duration.ofSeconds(10)) + .build(); + + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + + LOG.info("Get types response: {}", response.statusCode()); + assertEquals(200, response.statusCode()); + + ObjectNode types = mapper.readValue(response.body(), ObjectNode.class); + assertNotNull(types.get("entityDefs")); + LOG.info("Found {} entity types", types.get("entityDefs").size()); + } + + @Test + @Order(3) + @DisplayName("Test Create Table Asset and Verify Kafka Notification") + void testCreateTableAssetAndVerifyResponseAndKafkaNotification() throws Exception { + LOG.info("Testing create asset..."); + + // Create Kafka consumer + KafkaConsumer consumer = createKafkaConsumer(); + + // Create basic auth header + String auth = "admin:admin"; + String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes()); + + // Create the payload + String payload = """ + { + "entities": [ + { + "typeName": "Table", + "guid": "-1", + "attributes": { + "qualifiedName": "ANALYTICS_4", + "name": "ANALYTICS_4", + "description": "test", + "connectionQualifiedName": "Connection2", + "connectorName": "snowflake", + "adminGroups": ["Dev", "admin"] + } + } + ] + }"""; + + // Create the request + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(atlasBaseUrl + "/entity/bulk")) + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("Authorization", "Basic " + encodedAuth) + .POST(HttpRequest.BodyPublishers.ofString(payload)) + .timeout(Duration.ofSeconds(10)) + .build(); + + // Send the request + HttpResponse response = + httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + + LOG.info("Create asset response: {} - {}", response.statusCode(), response.body()); + assertEquals(200, response.statusCode()); + + // Parse and verify the response + ObjectNode result = mapper.readValue(response.body(), ObjectNode.class); + assertNotNull(result.get("mutatedEntities")); + assertTrue(result.get("mutatedEntities").has("CREATE")); + assertEquals(1, result.get("mutatedEntities").get("CREATE").size()); + + // Get the created entity's GUID + String createdGuid = result.get("mutatedEntities") + .get("CREATE") + .get(0) + .get("guid") + .asText(); + + // Wait for and verify Kafka message + boolean messageFound = false; + int maxAttempts = 10; + ObjectNode kafkaMessage = null; + + for (int i = 0; i < maxAttempts && !messageFound; i++) { + ConsumerRecords records = consumer.poll(Duration.ofSeconds(1)); + for (ConsumerRecord record : records) { + ObjectNode message = mapper.readValue(record.value(), ObjectNode.class); + + // Check if this is our message by matching the GUID + if (message.has("message") && + message.get("message").has("entity") && + message.get("message").get("entity").has("guid") && + message.get("message").get("entity").get("guid").asText().equals(createdGuid)) { + + messageFound = true; + kafkaMessage = message; + break; + } + } + } + + assertTrue(messageFound, "Kafka message for created entity not found"); + assertNotNull(kafkaMessage, "Kafka message should not be null"); + + // Verify message structure and content + JsonNode messageNode = kafkaMessage.get("message"); + + // Verify operation type + assertEquals("ENTITY_NOTIFICATION_V2", messageNode.get("type").asText()); + assertEquals("ENTITY_CREATE", messageNode.get("operationType").asText()); + + // Verify entity section + JsonNode entityNode = messageNode.get("entity"); + assertEquals("Table", entityNode.get("typeName").asText()); + assertEquals(createdGuid, entityNode.get("guid").asText()); + + // Verify attributes + JsonNode attributesNode = entityNode.get("attributes"); + assertEquals("ANALYTICS_4", attributesNode.get("qualifiedName").asText()); + assertEquals("ANALYTICS_4", attributesNode.get("name").asText()); + assertEquals("test", attributesNode.get("description").asText()); + assertEquals("Connection2", attributesNode.get("connectionQualifiedName").asText()); + assertEquals("snowflake", attributesNode.get("connectorName").asText()); + + // Verify admin groups + assertTrue(attributesNode.get("adminGroups").isArray()); + assertEquals(2, attributesNode.get("adminGroups").size()); + assertEquals("Dev", attributesNode.get("adminGroups").get(0).asText()); + assertEquals("admin", attributesNode.get("adminGroups").get(1).asText()); + + // Clean up + consumer.close(); + } + + @AfterAll + void tearDown() { + LOG.info("Test completed"); + } + + private KafkaConsumer createKafkaConsumer() { + Properties props = new Properties(); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:" + kafka.getFirstMappedPort()); + props.put(ConsumerConfig.GROUP_ID_CONFIG, "test-group"); + props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); + props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); + props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); + + KafkaConsumer consumer = new KafkaConsumer<>(props); + consumer.subscribe(Collections.singletonList("ATLAS_ENTITIES")); + return consumer; + } +} \ No newline at end of file diff --git a/webapp/src/test/resources/deploy/conf/atlas-application.properties b/webapp/src/test/resources/deploy/conf/atlas-application.properties new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/conf/atlas-env.sh b/webapp/src/test/resources/deploy/conf/atlas-env.sh new file mode 100644 index 00000000000..c4241e6655a --- /dev/null +++ b/webapp/src/test/resources/deploy/conf/atlas-env.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# The java implementation to use. If JAVA_HOME is not found we expect java and jar to be in path +#export JAVA_HOME= + +# any additional java opts you want to set. This will apply to both client and server operations +#export ATLAS_OPTS= + +# any additional java opts that you want to set for client only +#export ATLAS_CLIENT_OPTS= + +# java heap size we want to set for the client. Default is 1024MB +#export ATLAS_CLIENT_HEAP= + +# any additional opts you want to set for atlas service. +#export ATLAS_SERVER_OPTS= + +# indicative values for large number of metadata entities (equal or more than 10,000s) +#export ATLAS_SERVER_OPTS="-server -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+PrintTenuringDistribution -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dumps/atlas_server.hprof -Xloggc:logs/gc-worker.log -verbose:gc -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1m -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCTimeStamps" + +# java heap size we want to set for the atlas server. Default is 1024MB +#export ATLAS_SERVER_HEAP= + +# indicative values for large number of metadata entities (equal or more than 10,000s) for JDK 8 +#export ATLAS_SERVER_HEAP="-Xms15360m -Xmx15360m -XX:MaxNewSize=5120m -XX:MetaspaceSize=100M -XX:MaxMetaspaceSize=512m" + +# What is is considered as atlas home dir. Default is the base locaion of the installed software +#export ATLAS_HOME_DIR= + +# Where log files are stored. Defatult is logs directory under the base install location +#export ATLAS_LOG_DIR= + +# Where pid files are stored. Defatult is logs directory under the base install location +#export ATLAS_PID_DIR= + +# where the atlas titan db data is stored. Defatult is logs/data directory under the base install location +#export ATLAS_DATA_DIR= + +# Where do you want to expand the war file. By Default it is in /server/webapp dir under the base install dir. +#export ATLAS_EXPANDED_WEBAPP_DIR= + +# indicates whether or not a local instance of HBase should be started for Atlas +export MANAGE_LOCAL_HBASE=${hbase.embedded} + +# indicates whether or not a local instance of Solr should be started for Atlas +export MANAGE_LOCAL_SOLR=${solr.embedded} + +# indicates whether or not cassandra is the embedded backend for Atlas +export MANAGE_EMBEDDED_CASSANDRA=${cassandra.embedded} + +# indicates whether or not a local instance of Elasticsearch should be started for Atlas +export MANAGE_LOCAL_ELASTICSEARCH=${elasticsearch.managed} diff --git a/webapp/src/test/resources/deploy/conf/atlas-simple-authz-policy.json b/webapp/src/test/resources/deploy/conf/atlas-simple-authz-policy.json new file mode 100644 index 00000000000..8a29b47684b --- /dev/null +++ b/webapp/src/test/resources/deploy/conf/atlas-simple-authz-policy.json @@ -0,0 +1,129 @@ +{ + "roles": { + "ROLE_ADMIN": { + "adminPermissions": [ + { + "privileges": [ ".*" ] + } + ], + "typePermissions": [ + { + "privileges": [ ".*" ], + "typeCategories": [ ".*" ], + "typeNames": [ ".*" ] + } + ], + "entityPermissions": [ + { + "privileges": [ ".*" ], + "entityTypes": [ ".*" ], + "entityIds": [ ".*" ], + "classifications": [ ".*" ], + "labels" : [ ".*" ], + "businessMetadata" : [ ".*" ], + "attributes" :[ ".*" ] + } + ], + "relationshipPermissions": [ + { + "privileges": [ ".*" ], + "relationshipTypes": [ ".*" ], + "end1EntityType": [ ".*" ], + "end1EntityId": [ ".*" ], + "end1EntityClassification": [ ".*" ], + "end2EntityType": [ ".*" ], + "end2EntityId": [ ".*" ], + "end2EntityClassification": [ ".*" ] + } + ] + }, + + "ROLE_MEMBER": { + "adminPermissions": [ + { + "privileges": [ ".*" ] + } + ], + "typePermissions": [ + { + "privileges": [ ".*" ], + "typeCategories": [ ".*" ], + "typeNames": [ ".*" ] + } + ], + "entityPermissions": [ + { + "privileges": [ ".*" ], + "entityTypes": [ ".*" ], + "entityIds": [ ".*" ], + "classifications": [ ".*" ], + "labels" : [ ".*" ], + "businessMetadata" : [ ".*" ], + "attributes" :[ ".*" ], + "attributeValueMap": { + "certificateStatus": "VERIFIED" + } + } + ], + "relationshipPermissions": [ + { + "privileges": [ ".*" ], + "relationshipTypes": [ ".*" ], + "end1EntityType": [ ".*" ], + "end1EntityId": [ ".*" ], + "end1EntityClassification": [ ".*" ], + "end2EntityType": [ ".*" ], + "end2EntityId": [ ".*" ], + "end2EntityClassification": [ ".*" ] + } + ] + }, + + "DATA_SCIENTIST": { + "entityPermissions": [ + { + "privileges": [ "entity-read", "entity-read-classification" ], + "entityTypes": [], + "entityIds": [ ".*" ], + "classifications": [ ".*" ] + } + ] + }, + + "DATA_STEWARD": { + "entityPermissions": [ + { + "privileges": [ "entity-read", "entity-create", "entity-update", "entity-read-classification", "entity-add-classification", "entity-update-classification", "entity-remove-classification" ], + "entityTypes": [ ".*" ], + "entityIds": [ ".*" ], + "classifications": [ ".*" ] + } + ], + "relationshipPermissions": [ + { + "privileges": [ "add-relationship", "update-relationship", "remove-relationship" ], + "relationshipTypes": [ ".*" ], + "end1EntityType": [ ".*" ], + "end1EntityId": [ ".*" ], + "end1EntityClassification": [ ".*" ], + "end2EntityType": [ ".*" ], + "end2EntityId": [ ".*" ], + "end2EntityClassification": [ ".*" ] + } + ] + } + }, + + "userRoles": { + "admin": [ "ROLE_MEMBER" ], + "rangertagsync": [ "DATA_SCIENTIST" ] + }, + + "groupRoles": { + "ROLE_ADMIN": [ "ROLE_ADMIN" ], + "ROLE_MEMBER": [ "ROLE_MEMBER" ], + "hadoop": [ "DATA_STEWARD" ], + "DATA_STEWARD": [ "DATA_STEWARD" ], + "RANGER_TAG_SYNC": [ "DATA_SCIENTIST" ] + } +} diff --git a/webapp/src/test/resources/deploy/conf/es-settings.json b/webapp/src/test/resources/deploy/conf/es-settings.json new file mode 100644 index 00000000000..f080fd16b6a --- /dev/null +++ b/webapp/src/test/resources/deploy/conf/es-settings.json @@ -0,0 +1,38 @@ +{ + "analysis": { + "analyzer": { + "my_custom_analyzer": { + "type": "custom", + "char_filter": [ + "emoticons" + ], + "tokenizer": "punctuation", + "filter": [ + "lowercase", + "english_stop" + ] + } + }, + "tokenizer": { + "punctuation": { + "type": "pattern", + "pattern": "[ .,!?]" + } + }, + "char_filter": { + "emoticons": { + "type": "mapping", + "mappings": [ + ":) => _happy_", + ":( => _sad_" + ] + } + }, + "filter": { + "english_stop": { + "type": "stop", + "stopwords": "_english_" + } + } + } +} diff --git a/webapp/src/test/resources/deploy/conf/keycloak-infra.json b/webapp/src/test/resources/deploy/conf/keycloak-infra.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/conf/keycloak-multitenant.json b/webapp/src/test/resources/deploy/conf/keycloak-multitenant.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/conf/keycloak-poc5.json b/webapp/src/test/resources/deploy/conf/keycloak-poc5.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/conf/keycloak.json b/webapp/src/test/resources/deploy/conf/keycloak.json new file mode 100644 index 00000000000..5d44db237bd --- /dev/null +++ b/webapp/src/test/resources/deploy/conf/keycloak.json @@ -0,0 +1,13 @@ +{ + "realm": "default", + "auth-server-url": "https://experience.atlan.com/auth", + "ssl-required": "external", + "resource": "atlan-web", + "public-client": false, + "confidential-port": 443, + "principal-attribute": "preferred_username", + "autodetect-bearer-only": true, + "credentials": { + "secret": "fb377fda-f894-4b6d-b3b4-1e0a058a25f6" + } +} \ No newline at end of file diff --git a/webapp/src/test/resources/deploy/conf/sentinel.conf b/webapp/src/test/resources/deploy/conf/sentinel.conf new file mode 100644 index 00000000000..d37f28c2fdf --- /dev/null +++ b/webapp/src/test/resources/deploy/conf/sentinel.conf @@ -0,0 +1,13 @@ +port 26379 + +dir /tmp + +sentinel monitor mymaster redis-master 6379 2 +sentinel down-after-milliseconds mymaster 5000 +sentinel failover-timeout mymaster 500 +sentinel parallel-syncs mymaster 1 + +sentinel monitor myslave redis-slave 6379 2 +sentinel down-after-milliseconds myslave 5000 +sentinel failover-timeout myslave 500 +sentinel parallel-syncs myslave 1 diff --git a/webapp/src/test/resources/deploy/conf/users-credentials.properties b/webapp/src/test/resources/deploy/conf/users-credentials.properties new file mode 100644 index 00000000000..1767ffdae68 --- /dev/null +++ b/webapp/src/test/resources/deploy/conf/users-credentials.properties @@ -0,0 +1,4 @@ +#username=group::sha256-password +admin=ADMIN::8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 +nobal=NOBAL::0589b2f8ba54ef1569d351d39fa978ba5918fc3ba0a23e479f3fbcd14d357289 +rangertagsync=RANGER_TAG_SYNC::0afe7a1968b07d4c3ff4ed8c2d809a32ffea706c66cd795ead9048e81cfaf034 \ No newline at end of file diff --git a/webapp/src/test/resources/deploy/elasticsearch/atlas-auth-es-schema.json b/webapp/src/test/resources/deploy/elasticsearch/atlas-auth-es-schema.json new file mode 100644 index 00000000000..58e7a9c0f64 --- /dev/null +++ b/webapp/src/test/resources/deploy/elasticsearch/atlas-auth-es-schema.json @@ -0,0 +1,128 @@ +{ + "mappings": { + "properties": { + "_expire_at_": { + "type": "date", + "store": true, + "doc_values": true + }, + "_ttl_": { + "type": "text", + "store": true + }, + "_version_": { + "type": "long", + "store": true, + "index": false + }, + "access": { + "type": "keyword" + }, + "action": { + "type": "keyword" + }, + "agent": { + "type": "keyword" + }, + "agentHost": { + "type": "keyword" + }, + "cliIP": { + "type": "keyword" + }, + "cliType": { + "type": "keyword" + }, + "cluster": { + "type": "keyword" + }, + "reqContext": { + "type": "keyword" + }, + "enforcer": { + "type": "keyword" + }, + "event_count": { + "type": "long", + "doc_values": true + }, + "event_dur_ms": { + "type": "long", + "doc_values": true + }, + "evtTime": { + "type": "date", + "doc_values": true + }, + "id": { + "type": "keyword", + "store": true + }, + "logType": { + "type": "keyword" + }, + "policy": { + "type": "keyword" + }, + "proxyUsers": { + "type": "keyword" + }, + "reason": { + "type": "text" + }, + "repo": { + "type": "keyword" + }, + "repoType": { + "type": "integer", + "doc_values": true + }, + "req_caller_id": { + "type": "keyword" + }, + "req_self_id": { + "type": "keyword" + }, + "reqData": { + "type": "text" + }, + "reqUser": { + "type": "keyword" + }, + "reqEntityGuid": { + "type": "keyword" + }, + "resType": { + "type": "keyword" + }, + "resource": { + "type": "keyword" + }, + "result": { + "type": "integer" + }, + "seq_num": { + "type": "long", + "doc_values": true + }, + "sess": { + "type": "keyword" + }, + "tags": { + "type": "keyword" + }, + "tags_str": { + "type": "text" + }, + "text": { + "type": "text" + }, + "zoneName": { + "type": "keyword" + }, + "policyVersion": { + "type": "long" + } + } + } +} \ No newline at end of file diff --git a/webapp/src/test/resources/deploy/elasticsearch/es-audit-mappings.json b/webapp/src/test/resources/deploy/elasticsearch/es-audit-mappings.json new file mode 100644 index 00000000000..19d3506b10f --- /dev/null +++ b/webapp/src/test/resources/deploy/elasticsearch/es-audit-mappings.json @@ -0,0 +1,45 @@ +{ + "mappings": { + "properties": { + "entityQualifiedName": { + "type": "keyword" + }, + "entityId": { + "type": "keyword" + }, + "typeName": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "timestamp": { + "type": "date" + }, + "action": { + "type": "keyword" + }, + "detail": { + "type": "nested" + }, + "user": { + "type": "keyword" + }, + "eventKey": { + "type": "keyword" + } + }, + "dynamic_templates": [ + { + "atlan_headers_as_keyword": { + "path_match": "headers.x-atlan-*", + "mapping": { + "type": "keyword" + } + } + } + ], + "date_detection": false, + "numeric_detection": false + } +} diff --git a/webapp/src/test/resources/deploy/elasticsearch/es-mappings.json b/webapp/src/test/resources/deploy/elasticsearch/es-mappings.json new file mode 100644 index 00000000000..56d12b2c0d4 --- /dev/null +++ b/webapp/src/test/resources/deploy/elasticsearch/es-mappings.json @@ -0,0 +1,54 @@ +{ + "properties": { + "relationshipList": { + "type": "nested", + "properties": { + "typeName": { + "type": "keyword" + }, + "guid": { + "type": "keyword" + }, + "provenanceType": { + "type": "integer" + }, + "endName": { + "type": "keyword" + }, + "endGuid": { + "type": "keyword" + }, + "endTypeName": { + "type": "keyword" + }, + "endQualifiedName": { + "type": "keyword" + }, + "label": { + "type": "keyword" + }, + "propagateTags": { + "type": "keyword" + }, + "status": { + "type": "keyword" + }, + "createdBy": { + "type": "keyword" + }, + "updatedBy": { + "type": "keyword" + }, + "createTime": { + "type": "long" + }, + "updateTime": { + "type": "long" + }, + "version": { + "type": "long" + } + } + } + } +} \ No newline at end of file diff --git a/webapp/src/test/resources/deploy/elasticsearch/es-search-logs-mappings.json b/webapp/src/test/resources/deploy/elasticsearch/es-search-logs-mappings.json new file mode 100644 index 00000000000..43b960eb5b0 --- /dev/null +++ b/webapp/src/test/resources/deploy/elasticsearch/es-search-logs-mappings.json @@ -0,0 +1,185 @@ +{ + "mappings": { + "properties": { + "request.attributes": { + "type": "keyword" + }, + "request.relationAttributes": { + "type": "keyword" + }, + "request.dsl": { + "type": "flattened" + }, + "request.dslText": { + "type": "text", + "analyzer": "atlan_json_analyzer" + }, + + + "persona": { + "type": "keyword", + "fields": { + "text": { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + "purpose": { + "type": "keyword", + "fields": { + "text": { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + + "searchInput": { + "type": "text", + "analyzer": "atlan_text_analyzer", + "fields": { + "keyword": { + "type": "keyword" + }, + "keyword_lowercase": { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + + "userAgent": { + "type": "keyword" + }, + "host": { + "type": "keyword" + }, + "ipAddress": { + "type": "keyword" + }, + "userName": { + "type": "keyword" + }, + "entityGuidsAll": { + "type": "keyword" + }, + "entityQFNamesAll": { + "type": "keyword" + }, + "entityGuidsAllowed": { + "type": "keyword" + }, + "entityQFNamesAllowed": { + "type": "keyword" + }, + "entityGuidsDenied": { + "type": "keyword" + }, + "entityQFNamesDenied": { + "type": "keyword" + }, + + "entityTypeNamesAll": { + "type": "keyword" + }, + "entityTypeNamesAllowed": { + "type": "keyword" + }, + "entityTypeNamesDenied": { + "type": "keyword" + }, + + "utmTags": { + "type": "keyword" + }, + "hasResult": { + "type": "boolean" + }, + "isFailed": { + "type": "boolean" + }, + "errorDetails": { + "type": "text" + }, + "errorCode": { + "type": "keyword" + }, + "resultsCount": { + "type": "long" + }, + "timestamp": { + "type": "long" + }, + "createdAt": { + "type": "long" + }, + "responseTime": { + "type": "long" + } + } + }, + "settings": { + "analysis": { + "analyzer": { + "atlan_text_analyzer": { + "type": "custom", + "tokenizer": "atlan_tokenizer", + "filter": [ + "apostrophe", + "lowercase" + ], + "char_filter": [ + "number_filter" + ] + }, + "atlan_json_analyzer": { + "type": "custom", + "tokenizer": "atlan_json_tokenizer" + }, + "atlan_text_stemmer": { + "type": "custom", + "tokenizer": "atlan_tokenizer", + "filter": [ + "snowball_english", + "lowercase" + ], + "char_filter": [ + "number_filter" + ] + } + }, + "normalizer": { + "atlan_normalizer": { + "type": "custom", + "filter": [ + "lowercase" + ] + } + }, + "filter": { + "snowball_english": { + "type": "snowball", + "language": "English" + } + }, + "tokenizer": { + "atlan_tokenizer": { + "type": "pattern", + "pattern": "( |_|-|'|/|@)" + }, + "atlan_json_tokenizer": { + "type": "pattern", + "pattern": "(\"|\\{|\\}|:|\\[|\\]|\\,)" + } + }, + "char_filter": { + "number_filter": { + "type": "pattern_replace", + "pattern": "\\d+", + "replacement": " $0" + } + } + } + } +} \ No newline at end of file diff --git a/webapp/src/test/resources/deploy/elasticsearch/es-settings.json b/webapp/src/test/resources/deploy/elasticsearch/es-settings.json new file mode 100644 index 00000000000..d4983d00dcd --- /dev/null +++ b/webapp/src/test/resources/deploy/elasticsearch/es-settings.json @@ -0,0 +1,120 @@ +{ + "mapping" : { + "total_fields" : { + "limit" : "2000" + }, + "nested_objects" : { + "limit" : "100000" + } + }, + "similarity": { + "default": { + "type": "boolean" + } + }, + "analysis": { + "analyzer": { + "atlan_glossary_analyzer": { + "type": "custom", + "tokenizer": "atlan_glossary_tokenizer", + "filter": [ + "lowercase" + ], + "char_filter": [ + "letter_number_filter" + ] + }, + "atlan_text_analyzer": { + "type": "custom", + "tokenizer": "atlan_tokenizer", + "filter": [ + "apostrophe", "lowercase" + ], + "char_filter":[ + "number_filter" + ] + }, + "atlan_text_comma_analyzer": { + "type": "custom", + "tokenizer": "atlan_comma_tokenizer", + "filter": [ + "lowercase" + ] + }, + "atlan_text_stemmer": { + "type": "custom", + "tokenizer": "atlan_tokenizer", + "filter": [ + "snowball_english", "lowercase" + ], + "char_filter":[ + "number_filter" + ] + }, + "search_synonyms": { + "type": "custom", + "filter": [ + "graph_synonyms", "lowercase" + ], + "tokenizer": "atlan_tokenizer" + }, + "truncate_analyzer": { + "char_filter": [ + "truncate_filter" + ], + "tokenizer": "standard" + } + }, + "normalizer": { + "atlan_normalizer": { + "type": "custom", + "filter": ["lowercase"] + } + }, + "filter": { + "graph_synonyms": { + "type": "synonym_graph", + "synonyms": [ "foo, bar => baz" ] + }, + "snowball_english": { + "type": "snowball", + "language": "English" + } + }, + "tokenizer": { + "atlan_glossary_tokenizer": { + "type": "char_group", + "tokenize_on_chars": [ + "whitespace", + "punctuation", + "symbol" + ] + }, + "atlan_tokenizer": { + "type": "pattern", + "pattern": "( |_|-|'|/|@)" + }, + "atlan_comma_tokenizer": { + "type": "pattern", + "pattern": "," + } + }, + "char_filter":{ + "letter_number_filter": { + "type": "pattern_replace", + "pattern": "\\d+", + "replacement": " $0 " + }, + "number_filter":{ + "type":"pattern_replace", + "pattern":"\\d+", + "replacement":" $0" + }, + "truncate_filter": { + "pattern": "(^.{0,100000}).*$", + "type": "pattern_replace", + "replacement": "$1 " + } + } + } +} diff --git a/webapp/src/test/resources/deploy/models/0000-Area0/0010-base_model.json b/webapp/src/test/resources/deploy/models/0000-Area0/0010-base_model.json new file mode 100644 index 00000000000..90146fd071d --- /dev/null +++ b/webapp/src/test/resources/deploy/models/0000-Area0/0010-base_model.json @@ -0,0 +1,9460 @@ +{ + "classificationDefs": + [], + "enumDefs": + [ + { + "category": "ENUM", + "name": "SourceCostUnitType", + "description": "Unit used when calculating cost of source queries.", + "serviceType": "atlas_core", + "typeVersion": "1.1", + "elementDefs": + [ + { + "value": "Credits", + "ordinal": 0 + }, + { + "value": "bytes", + "ordinal": 1 + }, + { + "value": "slot-ms", + "ordinal": 2 + } + ] + }, + { + "name": "AtlasGlossaryTermRelationshipStatus", + "description": "How reliable the relationship is between two glossary terms.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "ordinal": 0, + "value": "DRAFT", + "description": "DRAFT means the relationship is under development." + }, + { + "ordinal": 1, + "value": "ACTIVE", + "description": "ACTIVE means the relationship is validated and in use." + }, + { + "ordinal": 2, + "value": "DEPRECATED", + "description": "DEPRECATED means the the relationship is being phased out." + }, + { + "ordinal": 3, + "value": "OBSOLETE", + "description": "OBSOLETE means that the relationship should not be used anymore." + }, + { + "ordinal": 99, + "value": "OTHER", + "description": "OTHER means that there is another status." + } + ] + }, + { + "name": "AtlasGlossaryTermAssignmentStatus", + "description": "How much the semantic assignment should be trusted.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "value": "DISCOVERED", + "ordinal": 0, + "description": "DISCOVERED means that the semantic assignment was added by a discovery engine." + }, + { + "value": "PROPOSED", + "ordinal": 1, + "description": "PROPOSED means that the semantic assignment was proposed by person - they may be a subject matter expert, or consumer of the Referenceable asset" + }, + { + "value": "IMPORTED", + "ordinal": 2, + "description": "IMPORTED means that the semantic assignment has been imported from outside of the open metadata cluster" + }, + { + "value": "VALIDATED", + "ordinal": 3, + "description": "VALIDATED means that the semantic assignment has been reviewed and is highly trusted." + }, + { + "value": "DEPRECATED", + "ordinal": 4, + "description": "DEPRECATED means that the semantic assignment is being phased out. There may be another semantic assignment to the Referenceable that will ultimately replace this one." + }, + { + "value": "OBSOLETE", + "ordinal": 5, + "description": "OBSOLETE means that the semantic assignment is no longer in use," + }, + { + "value": "OTHER", + "ordinal": 6, + "description": "OTHER means that the semantic assignment value does not match any of the other Term Assignment Status values" + } + ] + }, + { + "name": "AtlasGlossaryType", + "description": "Defines type of the Glossary", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "ordinal": 0, + "value": "KNOWLEDGE_HUB", + "description": "Glossary will be used to store knowledge as documents" + } + ] + }, + { + "name": "AtlasGlossaryCategoryType", + "description": "Defines type if the Glossary Category", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "ordinal": 0, + "value": "DOCUMENT_FOLDER", + "description": "Document Folder will contain Documents" + } + ] + }, + { + "name": "AtlasGlossaryTermType", + "description": "Defines type if the Glossary Term", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "ordinal": 0, + "value": "DOCUMENT", + "description": "Will represent Document as knowledge hub" + } + ] + }, + { + "name": "table_type", + "description": "Type of the table.", + "typeVersion": "1.0", + "serviceType": "atlas_core", + "elementDefs": + [ + { + "ordinal": 0, + "value": "TEMPORARY" + }, + { + "ordinal": 1, + "value": "ICEBERG" + }, + { + "ordinal": 2, + "value": "KUDU" + } + ] + }, + { + "category": "ENUM", + "name": "SchemaRegistrySchemaType", + "description": "The SchemaRegistrySchemaType enum defines the possible values for languages that are supported as schema definition", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "value": "AVRO", + "ordinal": 0 + }, + { + "value": "JSON", + "ordinal": 1 + }, + { + "value": "PROTOBUF", + "ordinal": 2 + } + ] + }, + { + "category": "ENUM", + "name": "query_username_strategy", + "description": "Defines username used to override while making queries", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "value": "connectionUsername", + "ordinal": 0 + }, + { + "value": "atlanUsername", + "ordinal": 1 + } + ] + }, + { + "name": "FormFieldType", + "description": "Type of the field in a form.", + "typeVersion": "1.0", + "serviceType": "atlas_core", + "elementDefs": + [ + { + "ordinal": 0, + "value": "INT" + }, + { + "ordinal": 1, + "value": "STRING" + }, + { + "ordinal": 2, + "value": "DATE" + }, + { + "ordinal": 3, + "value": "BOOLEAN" + }, + { + "ordinal": 4, + "value": "LONG" + }, + { + "ordinal": 5, + "value": "JSON" + } + ] + }, + { + "name": "FormFieldDimension", + "description": "Type of the field's value in a form.", + "typeVersion": "1.0", + "serviceType": "atlas_core", + "elementDefs": + [ + { + "ordinal": 0, + "value": "SINGLE" + }, + { + "ordinal": 1, + "value": "MULTI" + } + ] + }, + { + "category": "ENUM", + "name": "AIDatasetType", + "description": "Defines the possible types on AI dataset.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "value": "TRAINING", + "ordinal": 0 + }, + { + "value": "TESTING", + "ordinal": 1 + }, + { + "value": "INFERENCE", + "ordinal": 2 + }, + { + "value": "VALIDATION", + "ordinal": 3 + }, + { + "value": "OUTPUT", + "ordinal": 4 + } + ] + }, + { + "name": "certificate_status", + "description": "Defines possible certificate statuses.", + "typeVersion": "1.1", + "serviceType": "atlas_core", + "elementDefs": + [ + { + "ordinal": 0, + "value": "DEPRECATED" + }, + { + "ordinal": 1, + "value": "DRAFT" + }, + { + "ordinal": 2, + "value": "VERIFIED" + } + ] + }, + { + "name": "google_datastudio_asset_type", + "description": "Defines the types of assets available in Google Data Studio.", + "typeVersion": "1.0", + "serviceType": "atlas_core", + "elementDefs": + [ + { + "ordinal": 0, + "value": "REPORT" + }, + { + "ordinal": 1, + "value": "DATA_SOURCE" + } + ] + }, + { + "name": "powerbi_endorsement", + "description": "Defines available endorsement statuses for Power BI assets.", + "typeVersion": "1.0", + "serviceType": "atlas_core", + "category": "ENUM", + "elementDefs": + [ + { + "ordinal": 0, + "value": "Promoted" + }, + { + "ordinal": 1, + "value": "Certified" + } + ] + }, + { + "name": "atlas_operation", + "description": "Defines audit operations in Atlas", + "typeVersion": "1.0", + "serviceType": "atlas_core", + "elementDefs": [ + { + "ordinal": 0, + "value": "OTHERS" + }, + { + "ordinal": 1, + "value": "PURGE" + }, + { + "ordinal": 2, + "value": "EXPORT" + }, + { + "ordinal": 3, + "value": "IMPORT" + }, + { + "ordinal": 4, + "value": "IMPORT_DELETE_REPL" + }, + { + "ordinal": 5, + "value": "TYPE_DEF_CREATE" + }, + { + "ordinal": 6, + "value": "TYPE_DEF_UPDATE" + }, + { + "ordinal": 7, + "value": "TYPE_DEF_DELETE" + }, + { + "ordinal": 8, + "value": "SERVER_START" + }, + { + "ordinal": 9, + "value": "SERVER_STATE_ACTIVE" + } + ] + }, + { + "category": "ENUM", + "name": "AuthPolicyType", + "description": "Policy Item type", + "serviceType": "atlas_core", + "typeVersion": "1.1", + "elementDefs": + [ + { + "value": "allow", + "ordinal": 0 + }, + { + "value": "deny", + "ordinal": 1 + }, + { + "value": "allowExceptions", + "ordinal": 2 + }, + { + "value": "denyExceptions", + "ordinal": 3 + }, + { + "value": "dataMask", + "ordinal": 4 + }, + { + "value": "rowFilter", + "ordinal": 5 + } + ] + }, + { + "category": "ENUM", + "name": "AuthPolicyCategory", + "description": "Policy category", + "serviceType": "atlas_core", + "typeVersion": "1.1", + "elementDefs": [ + { + "value": "bootstrap", + "ordinal": 0 + }, + { + "value": "persona", + "ordinal": 1 + }, + { + "value": "purpose", + "ordinal": 2 + } + ] + }, + { + "category": "ENUM", + "name": "AuthPolicyResourceCategory", + "description": "Policy resource category", + "serviceType": "atlas_core", + "typeVersion": "1.1", + "elementDefs": + [ + { + "value": "ENTITY", + "ordinal": 0 + }, + { + "value": "RELATIONSHIP", + "ordinal": 1 + }, + { + "value": "TAG", + "ordinal": 2 + }, + { + "value": "CUSTOM", + "ordinal": 3 + }, + { + "value": "TYPEDEFS", + "ordinal": 4 + }, + { + "value": "ADMIN", + "ordinal": 5 + } + ] + } + ], + "structDefs": + [ + { + "name": "PopularityInsights", + "description": "Detailed information about an asset's usage or popularity based on aggregated queries.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "recordUser", + "description": "Username or email of the user who ran the queries.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true + }, + { + "name": "recordQuery", + "description": "Query run at source.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": false + }, + { + "name": "recordQueryDuration", + "description": "Duration for which the query ran at source.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true + }, + { + "name": "recordQueryCount", + "description": "Number of queries run by the user.", + "typeName": "long", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true + }, + { + "name": "recordTotalUserCount", + "description": "Total number of users who ran queries.", + "typeName": "long", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true + }, + { + "name": "recordComputeCost", + "description": "Total compute cost for running all queries.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "recordMaxComputeCost", + "description": "Maximum compute cost across all query runs.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "recordComputeCostUnit", + "description": "Unit of measure for recordComputeCost.", + "typeName": "SourceCostUnitType", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "recordLastTimestamp", + "typeName": "date", + "description": "Timestamp of last operation or query run by the user.", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false + }, + { + "name": "recordWarehouse", + "description": "Name of the warehouse on which the queries were run.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "name": "StarredDetails", + "description": "Detailed information about the users who have starred an asset.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "assetStarredBy", + "description": "Username of the user who starred the asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true + }, + { + "name": "assetStarredAt", + "typeName": "date", + "description": "Time at which the user starred the asset.", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false + } + ] + }, + { + "name": "Histogram", + "description": "Detailed information representing a histogram of values.", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "boundaries", + "description": "Boundaries of the histogram.", + "typeName": "array", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + }, + { + "name": "frequencies", + "description": "Frequencies of the histogram.", + "typeName": "array", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + } + ] + }, + { + "name": "ColumnValueFrequencyMap", + "description": "Detailed information representing a column value and it's frequency.", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "columnValue", + "description": "Sample value for the column.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "columnValueFrequency", + "description": "Frequency of the sample value in the column.", + "typeName": "long", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "FormField", + "description": "Structure of a field in a form.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "formFieldId", + "description": "Unique identifier of the field in a form.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "formFieldName", + "description": "Name of the field in a form.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "formFieldType", + "description": "Type of the field in a form.", + "typeName": "FormFieldType", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "formFieldDimension", + "description": "Dimension of the field's value in a form.", + "typeName": "FormFieldDimension", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "formFieldOptions", + "description": "Options of the field in a form.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "name": "AuthPolicyValiditySchedule", + "description": "Validity schedule struct for policy", + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "policyValidityScheduleStartTime", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + }, + { + "name": "policyValidityScheduleEndTime", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + }, + { + "name": "policyValidityScheduleTimezone", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + } + ] + }, + { + "name": "AuthPolicyCondition", + "description": "Policy condition schedule struct", + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "policyConditionType", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + }, + { + "name": "policyConditionValues", + "typeName": "array", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + } + ] + }, + { + "name": "SourceTagAttachmentValue", + "description": "Detailed information about the value of a source tag's attachment to an asset.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": [ + { + "name": "tagAttachmentKey", + "description": "Attachment key, for example: 'has_pii' or 'type_pii'.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "tagAttachmentValue", + "description": "Attachment value, for example: 'true' or 'email'.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + } + ] + }, + { + "name": "SourceTagAttribute", + "description": "Detailed information about a source tag's attributes.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": [ + { + "name": "tagAttributeKey", + "description": "Attribute key, for example: 'allowedValues' or 'enabled'.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "tagAttributeValue", + "description": "Attribute value, for example: '[\"Private\", \"PII\"]' for allowedValues key or 'true' for enabled key.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "tagAttributeProperties", + "description": "Properties of the attribute.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + } + ] + }, + { + "name": "SourceTagAttachment", + "description": "Detailed information about the attachment of a tag to an Atlan asset, synced from source.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": [ + { + "name": "sourceTagName", + "description": "Simple name of the source tag.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "indexTypeESConfig": { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": { + "keyword": { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "sourceTagQualifiedName", + "description": "Unique name of the source tag, in Atlan.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "sourceTagGuid", + "description": "Unique identifier (GUID) of the source tag, in Atlan.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "sourceTagConnectorName", + "description": "Connector that is the source of the tag.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "sourceTagValue", + "description": "Value of the tag attachment, from the source.", + "typeName": "array", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "isIndexable": false + }, + { + "name": "isSourceTagSynced", + "description": "Whether the tag attachment has been synced at the source (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "sourceTagSyncTimestamp", + "description": "Time (epoch) when the tag attachment was synced at the source, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "indexTypeESFields": { + "date": { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "sourceTagSyncError", + "description": "Error message if the tag attachment sync at the source failed.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "sourceTagType", + "description": "Specifies the source tag type.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + } + ] + } + ], + "entityDefs": + [ + { + "name": "__internal", + "superTypes": [], + "serviceType": "atlas_core", + "typeVersion": "1.0", + "attributeDefs": [] + }, + { + "name": "AtlasServer", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "superTypes": [ + ], + "attributeDefs": [ + { + "name": "AtlasServer.name", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": false + }, + { + "name": "AtlasServer.displayName", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": false + }, + { + "name": "fullName", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": true + }, + { + "name": "urls", + "typeName": "array", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "additionalInfo", + "typeName": "map", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "__AtlasUserProfile", + "superTypes": [ + "__internal" + ], + "serviceType": "atlas_core", + "typeVersion": "1.0", + "attributeDefs": [ + { + "name": "__AtlasUserProfile.name", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": true + }, + { + "name": "fullName", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "savedSearches", + "typeName": "array<__AtlasUserSavedSearch>", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "constraints": [ + { + "type": "ownedRef" + } + ] + } + ] + }, + { + "name": "__AtlasUserSavedSearch", + "superTypes": [ + "__internal" + ], + "serviceType": "atlas_core", + "typeVersion": "1.0", + "attributeDefs": [ + { + "name": "__AtlasUserSavedSearch.name", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + }, + { + "name": "ownerName", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + }, + { + "name": "searchType", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": false + }, + { + "name": "uniqueName", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": true + }, + { + "name": "searchParameters", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + }, + { + "name": "uiParameters", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "__ExportImportAuditEntry", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "superTypes": [ + "__internal" + ], + "attributeDefs": [ + { + "name": "userName", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "operation", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": false + }, + { + "name": "sourceServerName", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "targetServerName", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "operationParams", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "operationStartTime", + "typeName": "long", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": false + }, + { + "name": "operationEndTime", + "typeName": "long", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "resultSummary", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "__AtlasAuditEntry", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "superTypes": [ + "__internal" + ], + "attributeDefs": [ + { + "name": "userName", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": false + }, + { + "name": "operation", + "typeName": "atlas_operation", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": false + }, + { + "name": "startTime", + "typeName": "date", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": false + }, + { + "name": "endTime", + "typeName": "date", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "clientId", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "params", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "result", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "resultCount", + "typeName": "long", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "Referenceable", + "description": "Base class for everything in Atlan that can be referenced by qualifiedName.", + "superTypes": + [], + "serviceType": "atlas_core", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "qualifiedName", + "description": "Unique name for this asset. This is typically a concatenation of the asset's name onto its parent's qualifiedName. This must be unique across all assets of the same type.", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": true, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "replicatedFrom", + "description": "Unused. List of servers where this entity is replicated from.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "options": + { + "isSoftReference": "true" + } + }, + { + "name": "replicatedTo", + "description": "Unused. List of servers where this entity is replicated to.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "options": + { + "isSoftReference": "true" + } + } + ] + }, + { + "name": "Asset", + "description": "Base class for all assets.", + "superTypes": + [ + "Referenceable" + ], + "serviceType": "atlas_core", + "typeVersion": "1.4", + "attributeDefs": + [ + { + "name": "name", + "description": "Name of this asset. Fallback for display purposes, if displayName is empty.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": false, + "searchWeight": 10, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + }, + "stemmed": + { + "type": "text", + "analyzer": "atlan_text_stemmer" + } + } + }, + { + "name": "displayName", + "description": "Human-readable name of this asset used for display purposes (in user interface).", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false, + "searchWeight": 10, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword" + } + } + }, + { + "name": "description", + "description": "Description of this asset, for example as crawled from a source. Fallback for display purposes, if userDescription is empty.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "searchWeight": 9, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "userDescription", + "description": "Description of this asset, as provided by a user. If present, this will be used for the description in user interface.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false, + "searchWeight": 9, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "tenantId", + "description": "Name of the Atlan workspace in which this asset exists.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true + }, + { + "name": "certificateStatus", + "description": "Status of this asset's certification.", + "typeName": "certificate_status", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "skipScrubbing": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "certificateUpdatedBy" + ], + "timestamp": + [ + "certificateUpdatedAt" + ] + }, + "indexTypeESConfig": + { + "normalizer": "atlan_normalizer" + }, + "indexTypeESFields": + { + "text": + { + "type": "text" + } + } + }, + { + "name": "certificateStatusMessage", + "description": "Human-readable descriptive message used to provide further detail to certificateStatus.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "certificateUpdatedBy" + ], + "timestamp": + [ + "certificateUpdatedAt" + ] + } + }, + { + "name": "certificateUpdatedBy", + "description": "Name of the user who last updated the certification of this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "certificateUpdatedAt", + "description": "Time (epoch) at which the certification was last updated, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "announcementTitle", + "description": "Brief title for the announcement on this asset. Required when announcementType is specified.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "announcementUpdatedBy" + ], + "timestamp": + [ + "announcementUpdatedAt" + ] + } + }, + { + "name": "announcementMessage", + "description": "Detailed message to include in the announcement on this asset.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "announcementUpdatedBy" + ], + "timestamp": + [ + "announcementUpdatedAt" + ] + } + }, + { + "name": "announcementType", + "description": "Type of announcement on this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "announcementUpdatedBy" + ], + "timestamp": + [ + "announcementUpdatedAt" + ] + } + }, + { + "name": "announcementUpdatedAt", + "description": "Time (epoch) at which the announcement was last updated, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "announcementUpdatedBy", + "description": "Name of the user who last updated the announcement.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "ownerUsers", + "description": "List of users who own this asset.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "ownerGroups", + "description": "List of groups who own this asset.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "adminUsers", + "description": "List of users who administer this asset. (This is only used for certain asset types.)", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "adminGroups", + "description": "List of groups who administer this asset. (This is only used for certain asset types.)", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "viewerUsers", + "description": "List of users who can view assets contained in a collection. (This is only used for certain asset types.)", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "viewerGroups", + "description": "List of groups who can view assets contained in a collection. (This is only used for certain asset types.)", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "connectorName", + "description": "Type of the connector through which this asset is accessible.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "connectionName", + "description": "Simple name of the connection through which this asset is accessible.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text" + } + } + }, + { + "name": "connectionQualifiedName", + "description": "Unique name of the connection through which this asset is accessible.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "__hasLineage", + "description": "Whether this asset has lineage (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": false, + "skipScrubbing": true, + "defaultValue": false + }, + { + "name": "isDiscoverable", + "description": "Whether this asset is discoverable through the UI (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isEditable", + "description": "Whether this asset can be edited in the UI (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "subType", + "description": "Subtype of this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "viewScore", + "description": "View score for this asset.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "defaultValue": 1.17549435E-38, + "includeInNotification": false, + "indexTypeESFields": + { + "rank_feature": + { + "type": "rank_feature" + } + } + }, + { + "name": "popularityScore", + "description": "Popularity score for this asset.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "defaultValue": 1.17549435E-38, + "includeInNotification": true, + "indexTypeESFields": + { + "rank_feature": + { + "type": "rank_feature" + } + } + }, + { + "name": "sourceOwners", + "description": "List of owners of this asset, in the source system.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceCreatedBy", + "description": "Name of the user who created this asset, in the source system.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceCreatedAt", + "description": "Time (epoch) at which this asset was created in the source system, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "sourceUpdatedAt", + "description": "Time (epoch) at which this asset was last updated in the source system, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "sourceUpdatedBy", + "description": "Name of the user who last updated this asset, in the source system.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceURL", + "description": "URL to the resource within the source application, used to create a button to view this asset in the source application.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceEmbedURL", + "description": "URL to create an embed for a resource (for example, an image of a dashboard) within Atlan.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "lastSyncWorkflowName", + "description": "Name of the crawler that last synchronized this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "lastSyncRunAt", + "description": "Time (epoch) at which this asset was last crawled, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "lastSyncRun", + "description": "Name of the last run of the crawler that last synchronized this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "adminRoles", + "description": "List of roles who administer this asset. (This is only used for Connection assets.)", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceReadCount", + "description": "Total count of all read operations at source.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadUserCount", + "description": "Total number of unique users that read data from asset.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceLastReadAt", + "description": "Timestamp of most recent read operation.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "lastRowChangedAt", + "description": "Time (epoch) of the last operation that inserted, updated, or deleted rows, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "sourceTotalCost", + "description": "Total cost of all operations at source.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceCostUnit", + "description": "The unit of measure for sourceTotalCost.", + "typeName": "SourceCostUnitType", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "sourceReadQueryCost", + "description": "Total cost of read queries at source.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadRecentUserList", + "description": "List of usernames of the most recent users who read this asset.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadRecentUserRecordList", + "description": "List of usernames with extra insights for the most recent users who read this asset.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadTopUserList", + "description": "List of usernames of the users who read this asset the most.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadTopUserRecordList", + "description": "List of usernames with extra insights for the users who read this asset the most.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadPopularQueryRecordList", + "description": "List of the most popular queries that accessed this asset.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadExpensiveQueryRecordList", + "description": "List of the most expensive queries that accessed this asset.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadSlowQueryRecordList", + "description": "List of the slowest queries that accessed this asset.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceQueryComputeCostList", + "description": "List of most expensive warehouse names.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceQueryComputeCostRecordList", + "description": "List of most expensive warehouses with extra insights.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "dbtQualifiedName", + "description": "Unique name of this asset in dbt.", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "assetDbtWorkflowLastUpdated", + "description": "Name of the DBT workflow in Atlan that last updated the asset.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtAlias", + "description": "Alias of this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtMeta", + "description": "Metadata for this asset in dbt, specifically everything under the 'meta' key in the dbt object.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "assetDbtUniqueId", + "description": "Unique identifier of this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtAccountName", + "description": "Name of the account in which this asset exists in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtProjectName", + "description": "Name of the project in which this asset exists in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtPackageName", + "description": "Name of the package in which this asset exists in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtJobName", + "description": "Name of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtJobSchedule", + "description": "Schedule of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "assetDbtJobStatus", + "description": "Status of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtTestStatus", + "description": "All associated dbt test statuses.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobScheduleCronHumanized", + "description": "Human-readable cron schedule of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + } + }, + { + "name": "assetDbtJobLastRun", + "description": "Time (epoch) at which the job that materialized this asset in dbt last ran, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunUrl", + "description": "URL of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunCreatedAt", + "description": "Time (epoch) at which the job that materialized this asset in dbt was last created, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunUpdatedAt", + "description": "Time (epoch) at which the job that materialized this asset in dbt was last updated, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunDequedAt", + "description": "Time (epoch) at which the job that materialized this asset in dbt was dequeued, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunStartedAt", + "description": "Time (epoch) at which the job that materialized this asset in dbt was started running, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunTotalDuration", + "description": "Total duration of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunTotalDurationHumanized", + "description": "Human-readable total duration of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunQueuedDuration", + "description": "Total duration the job that materialized this asset in dbt spent being queued.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunQueuedDurationHumanized", + "description": "Human-readable total duration of the last run of the job that materialized this asset in dbt spend being queued.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunRunDuration", + "description": "Run duration of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunRunDurationHumanized", + "description": "Human-readable run duration of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunGitBranch", + "description": "Branch in git from which the last run of the job that materialized this asset in dbt ran.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "analyzer": "atlan_text_analyzer", + "type": "text" + } + } + }, + { + "name": "assetDbtJobLastRunGitSha", + "description": "SHA hash in git for the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunStatusMessage", + "description": "Status message of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtJobLastRunOwnerThreadId", + "description": "Thread ID of the owner of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunExecutedByThreadId", + "description": "Thread ID of the user who executed the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunArtifactsSaved", + "description": "Whether artifacts were saved from the last run of the job that materialized this asset in dbt (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunArtifactS3Path", + "description": "Path in S3 to the artifacts saved from the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunHasDocsGenerated", + "description": "Whether docs were generated from the last run of the job that materialized this asset in dbt (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunHasSourcesGenerated", + "description": "Whether sources were generated from the last run of the job that materialized this asset in dbt (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunNotificationsSent", + "description": "Whether notifications were sent from the last run of the job that materialized this asset in dbt (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobNextRun", + "description": "Time (epoch) when the next run of the job that materializes this asset in dbt is scheduled.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobNextRunHumanized", + "description": "Human-readable time when the next run of the job that materializes this asset in dbt is scheduled.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtEnvironmentName", + "description": "Name of the environment in which this asset is materialized in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtEnvironmentDbtVersion", + "description": "Version of the environment in which this asset is materialized in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtTags", + "description": "List of tags attached to this asset in dbt.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "analyzer": "atlan_text_analyzer", + "type": "text" + } + } + }, + { + "name": "assetDbtSemanticLayerProxyUrl", + "description": "URL of the semantic layer proxy for this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtSourceFreshnessCriteria", + "description": "Freshness criteria for the source of this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "sampleDataUrl", + "description": "URL for sample data for this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "assetTags", + "description": "List of tags attached to this asset.", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "analyzer": "atlan_text_analyzer", + "type": "text" + } + } + }, + { + "name": "assetMcIncidentNames", + "description": "List of Monte Carlo incident names attached to this asset.", + "typeName": "array", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword" + } + } + }, + { + "name": "assetMcIncidentQualifiedNames", + "description": "List of unique Monte Carlo incident names attached to this asset.", + "typeName": "array", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "assetMcAlertQualifiedNames", + "description": "List of unique Monte Carlo alert names attached to this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "assetMcMonitorNames", + "description": "List of Monte Carlo monitor names attached to this asset.", + "typeName": "array", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword" + } + } + }, + { + "name": "assetMcMonitorQualifiedNames", + "description": "List of unique Monte Carlo monitor names attached to this asset.", + "typeName": "array", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "assetMcMonitorStatuses", + "description": "Statuses of all associated Monte Carlo monitors.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcMonitorTypes", + "description": "Types of all associated Monte Carlo monitors.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcMonitorScheduleTypes", + "description": "Schedules of all associated Monte Carlo monitors.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIncidentTypes", + "description": "List of Monte Carlo incident types associated with this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIncidentSubTypes", + "description": "List of Monte Carlo incident sub-types associated with this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIncidentSeverities", + "description": "List of Monte Carlo incident severities associated with this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIncidentPriorities", + "description": "List of Monte Carlo incident priorities associated with this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIncidentStates", + "description": "List of Monte Carlo incident states associated with this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIsMonitored", + "description": "Tracks whether this asset is monitored by MC or not", + "typeName": "boolean", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetMcLastSyncRunAt", + "description": "Time (epoch) at which this asset was last synced from Monte Carlo.", + "typeName": "date", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "starredBy", + "description": "Users who have starred this asset.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "starredDetailsList", + "description": "List of usernames with extra information of the users who have starred an asset.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "starredCount", + "description": "Number of users who have starred this asset.", + "typeName": "int", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetAnomaloDQStatus", + "description": "Status of data quality from Anomalo.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetAnomaloCheckCount", + "description": "Total number of checks present in Anomalo for this asset.", + "typeName": "long", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetAnomaloFailedCheckCount", + "description": "Total number of checks failed in Anomalo for this asset.", + "typeName": "long", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetAnomaloCheckStatuses", + "description": "Stringified JSON object containing status of all Anomalo checks associated to this asset.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetAnomaloLastCheckRunAt", + "description": "Time (epoch) at which the last check was run via Anomalo.", + "typeName": "date", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetAnomaloAppliedCheckTypes", + "description": "All associated Anomalo check types.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetAnomaloFailedCheckTypes", + "description": "All associated Anomalo failed check types.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetAnomaloSourceUrl", + "description": "URL of the source in Anomalo.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetSodaDQStatus", + "description": "Status of data quality from Soda.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetSodaCheckCount", + "description": "Number of checks done via Soda.", + "typeName": "long", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetSodaLastSyncRunAt", + "description": "", + "typeName": "date", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetSodaLastScanAt", + "description": "", + "typeName": "date", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetSodaCheckStatuses", + "description": "All associated Soda check statuses.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetSodaSourceURL", + "description": "", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetIcon", + "description": "Name of the icon to use for this asset. (Only applies to glossaries, currently.)", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "isPartial", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "defaultValue": false, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "isAIGenerated", + "description": "", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "defaultValue": false, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetCoverImage", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "assetThemeHex", + "description": "Color (in hexadecimal RGB) to use to represent this asset.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "lexicographicalSortOrder", + "description": "Custom order for sorting purpose, managed by client", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "indexType": "STRING", + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "hasContract", + "description": "Whether this asset has contract (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "defaultValue": false + }, + { + "name": "assetRedirectGUIDs", + "description": "Array of asset ids that equivalent to this asset.", + "typeName": "array", + "cardinality": "SET", + "indexType": "STRING", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "assetPolicyGUIDs", + "description": "Array of policy ids governing this asset", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "assetPoliciesCount", + "description": "Count of policies inside the asset", + "typeName": "long", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "domainGUIDs", + "description": "Array of domain guids linked to this asset", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "nonCompliantAssetPolicyGUIDs", + "description": "Array of policy ids non-compliant to this asset", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "productGUIDs", + "description": "Array of product guids linked to this asset", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "outputProductGUIDs", + "description": "Array of product guids which have this asset as outputPort", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "applicationQualifiedName", + "description": "Qualified name of the Application that contains this asset.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "applicationFieldQualifiedName", + "description": "Qualified name of the ApplicationField that contains this asset.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + } + ] + }, + { + "name": "AtlasGlossary", + "description": "Instance of a glossary in Atlan.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.2", + "attributeDefs": + [ + { + "name": "shortDescription", + "description": "Unused. A short definition of the glossary. See 'description' and 'userDescription' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "longDescription", + "description": "Unused. A longer description of the glossary. See 'readme' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "skipScrubbing": true, + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "language", + "description": "Unused. Language of the glossary's contents.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "usage", + "description": "Unused. Inteded usage for the glossary.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "additionalAttributes", + "description": "Unused. Arbitrary set of additional attributes associated with this glossary.", + "typeName": "map", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "glossaryType", + "typeName": "AtlasGlossaryType", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "AtlasGlossaryCategory", + "description": "Instance of a category in Atlan, an organizational construct for glossary terms.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.2", + "attributeDefs": + [ + { + "name": "shortDescription", + "description": "Unused. Brief summary of the category. See 'description' and 'userDescription' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "longDescription", + "description": "Unused. Detailed description of the category. See 'readme' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "additionalAttributes", + "description": "Unused. Arbitrary set of additional attributes associated with the category.", + "typeName": "map", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "categoryType", + "typeName": "AtlasGlossaryCategoryType", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "AtlasGlossaryTerm", + "description": "Instance of a term in Atlan. Terms define concepts in natural language that can be associated with other assets to provide meaning.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.2", + "attributeDefs": + [ + { + "name": "shortDescription", + "description": "Unused. Brief summary of the term. See 'description' and 'userDescription' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "longDescription", + "description": "Unused. Detailed definition of the term. See 'readme' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "examples", + "description": "Unused. Exmaples of the term.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "abbreviation", + "description": "Unused. Abbreviation of the term.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "usage", + "description": "Unused. Intended usage for the term.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "additionalAttributes", + "description": "Unused. Arbitrary set of additional attributes for the terrm.", + "typeName": "map", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "termType", + "typeName": "AtlasGlossaryTermType", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "Catalog", + "description": "Base class for catalog assets. Catalog assets include any asset that can participate in lineage.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "EventStore", + "description": "Base class for event store assets.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "Insight", + "description": "Base class for Insights assets in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [] + }, + { + "name": "DataMesh", + "description": "Base class for data mesh assets.", + "superTypes": + [ + "Catalog" + ], + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "parentDomainQualifiedName", + "description": "Unique name of the parent domain in which this asset exists.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "superDomainQualifiedName", + "description": "Unique name of the top-level domain in which this asset exists.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + } + ] + }, + { + "name": "Model", + "category": "ENTITY", + "description": "Assets used to model data and information.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "modelName", + "description": "Simple name of the model in which this asset exists, or empty if it is itself a data model.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "modelQualifiedName", + "description": "Unique name of the model in which this asset exists, or empty if it is itself a data model.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "modelDomain", + "description": "Model domain in which this asset exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "modelNamespace", + "description": "Model namespace in which this asset exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "modelVersionName", + "description": "Simple name of the version in which this asset exists, or empty if it is itself a data model version.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "modelVersionAgnosticQualifiedName", + "description": "Unique name of the parent in which this asset exists, irrespective of the version (always implies the latest version).", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "modelVersionQualifiedName", + "description": "Unique name of the version in which this asset exists, or empty if it is itself a data model version.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "modelEntityName", + "description": "Simple name of the entity in which this asset exists, or empty if it is itself a data model entity.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "modelEntityQualifiedName", + "description": "Unique name of the entity in which this asset exists, or empty if it is itself a data model entity.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "modelType", + "description": "Type of the model asset (conceptual, logical, physical).", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "modelSystemDate", + "description": "System date for the asset.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "modelBusinessDate", + "description": "Business date for the asset.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "modelExpiredAtSystemDate", + "description": "System expiration date for the asset.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "modelExpiredAtBusinessDate", + "description": "Business expiration date for the asset.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + } + ], + "superTypes": + [ + "Catalog" + ] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "Resource", + "description": "Base class for resources.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "link", + "description": "URL to the resource.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isGlobal", + "description": "Whether the resource is global (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "reference", + "description": "Reference to the resource.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "resourceMetadata", + "description": "Metadata of the resource.", + "typeName": "map", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "SQL", + "description": "Base class for SQL assets.", + "typeVersion": "1.1", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "queryCount", + "description": "Number of times this asset has been queried.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryUserCount", + "description": "Number of unique users who have queried this asset.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryUserMap", + "description": "Map of unique users who have queried this asset to the number of times they have queried it.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryCountUpdatedAt", + "description": "Time (epoch) at which the query count was last updated, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": false + }, + { + "name": "databaseName", + "description": "Simple name of the database in which this SQL asset exists, or empty if it does not exist within a database.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "databaseQualifiedName", + "description": "Unique name of the database in which this SQL asset exists, or empty if it does not exist within a database.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "schemaName", + "description": "Simple name of the schema in which this SQL asset exists, or empty if it does not exist within a schema.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "schemaQualifiedName", + "description": "Unique name of the schema in which this SQL asset exists, or empty if it does not exist within a schema.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "tableName", + "description": "Simple name of the table in which this SQL asset exists, or empty if it does not exist within a table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "tableQualifiedName", + "description": "Unique name of the table in which this SQL asset exists, or empty if it does not exist within a table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "viewName", + "description": "Simple name of the view in which this SQL asset exists, or empty if it does not exist within a view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "viewQualifiedName", + "description": "Unique name of the view in which this SQL asset exists, or empty if it does not exist within a view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "calculationViewName", + "description": "Simple name of the calculation view in which this SQL asset exists, or empty if it does not exist within a calculation view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "calculationViewQualifiedName", + "description": "Unique name of the calculation view in which this SQL asset exists, or empty if it does not exist within a calculation view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "isProfiled", + "description": "Whether this asset has been profiled (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "valuesMinCount": 0, + "valuesMaxCount": 1, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "lastProfiledAt", + "description": "Time (epoch) at which this asset was last profiled, in milliseconds.", + "typeName": "date", + "isOptional": true, + "valuesMinCount": 0, + "valuesMaxCount": 1, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "CalculationView", + "description": "Instance of a calculation view in Atlan.", + "typeVersion": "1.1", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "columnCount", + "description": "Number of columns in this calculation view.", + "typeName": "long", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "calculationViewVersionId", + "description": "The version ID of this calculation view.", + "typeName": "long", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "calculationViewActivatedBy", + "description": "The owner who activated the calculation view", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "calculationViewActivatedAt", + "description": "Time at which this calculation view was activated at", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isIndexable": false, + "isUnique": false, + "includeInNotification": true + }, + { + "name": "calculationViewPackageId", + "description": "The full package id path to which a calculation view belongs/resides in the repository.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Column", + "description": "Instance of a column in Atlan.", + "typeVersion": "1.4", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "dataType", + "description": "Data type of values in this column.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "indexType": "STRING", + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "normalizer": "atlan_normalizer" + }, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "subDataType", + "description": "Sub-data type of this column.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "columnCompression", + "description": "Compression type of this column.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnEncoding", + "description": "Encoding type of this column.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "rawDataTypeDefinition", + "description": "", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "order", + "description": "Order (position) in which this column appears in the table (starting at 1).", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "nestedColumnOrder", + "description": "Order (position) in which this column appears in the nested Column (nest level starts at 1).", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "nestedColumnCount", + "description": "Number of columns nested within this (STRUCT or NESTED) column.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnHierarchy", + "description": "List of top-level upstream nested columns.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "isPartition", + "description": "Whether this column is a partition column (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "partitionOrder", + "description": "Order (position) of this partition column in the table.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isClustered", + "description": "Whether this column is a clustered column (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isPrimary", + "description": "When true, this column is the primary key for the table.", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isForeign", + "description": "When true, this column is a foreign key to another table. NOTE: this must be true when using the foreignKeyTo relationship to specify columns that refer to this column as a foreign key.", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isIndexed", + "description": "When true, this column is indexed in the database.", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isSort", + "description": "Whether this column is a sort column (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isDist", + "description": "Whether this column is a distribution column (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isPinned", + "description": "Whether this column is pinned (true) or not (false).", + "typeName": "boolean", + "defaultValue": false, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "pinnedBy" + ], + "timestamp": + [ + "pinnedAt" + ] + } + }, + { + "name": "pinnedBy", + "description": "User who pinned this column.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "indexType": "STRING", + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "pinnedAt", + "description": "Time (epoch) at which this column was pinned, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "precision", + "typeName": "int", + "description": "Total number of digits allowed, when the dataType is numeric.", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "defaultValue", + "description": "Default value for this column.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "isNullable", + "description": "When true, the values in this column can be null.", + "typeName": "boolean", + "defaultValue": true, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "numericScale", + "description": "Number of digits allowed to the right of the decimal point.", + "typeName": "float", + "cardinality": "SINGLE", + "isUnique": false, + "isOptional": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "maxLength", + "description": "Maximum length of a value in this column.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "validations", + "description": "Validations for this column.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "parentColumnQualifiedName", + "description": "Unique name of the column this column is nested within, for STRUCT and NESTED columns.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "parentColumnName", + "description": "Simple name of the column this column is nested within, for STRUCT and NESTED columns.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "columnDistinctValuesCount", + "description": "Number of rows that contain distinct values.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnDistinctValuesCountLong", + "description": "Number of rows that contain distinct values.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnHistogram", + "description": "List of values in a histogram that represents the contents of this column.", + "typeName": "Histogram", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMax", + "description": "Greatest value in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMin", + "description": "Least value in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMean", + "description": "Arithmetic mean of the values in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnSum", + "description": "Calculated sum of the values in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMedian", + "description": "Calculated median of the values in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnStandardDeviation", + "description": "Calculated standard deviation of the values in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnUniqueValuesCount", + "description": "Number of rows in which a value in this column appears only once.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnUniqueValuesCountLong", + "description": "Number of rows in which a value in this column appears only once.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnAverage", + "description": "Average value in this column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnAverageLength", + "description": "Average length of values in a string column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnDuplicateValuesCount", + "description": "Number of rows that contain duplicate values.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnDuplicateValuesCountLong", + "description": "Number of rows that contain duplicate values.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMaximumStringLength", + "description": "Length of the longest value in a string column.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMaxs", + "description": "List of the greatest values in a column.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMinimumStringLength", + "description": "Length of the shortest value in a string column.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMins", + "description": "List of the least values in a column.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMissingValuesCount", + "description": "Number of rows in a column that do not contain content.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMissingValuesCountLong", + "description": "Number of rows in a column that do not contain content.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMissingValuesPercentage", + "description": "Percentage of rows in a column that do not contain content.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnUniquenessPercentage", + "description": "Ratio indicating how unique data in this column is: 0 indicates that all values are the same, 100 indicates that all values in this column are unique.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnVariance", + "description": "Calculated variance of the values in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnTopValues", + "description": "List of top values in this column.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnDepthLevel", + "typeName": "int", + "description": "Level of nesting of this column, used for STRUCT and NESTED columns.", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "nosqlCollectionName", + "description": "Simple name of the cosmos/mongo collection in which this SQL asset (column) exists, or empty if it does not exist within a cosmos/mongo collection.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword" + } + } + }, + { + "name": "nosqlCollectionQualifiedName", + "description": "Unique name of the cosmos/mongo collection in which this SQL asset (column) exists, or empty if it does not exist within a cosmos/mongo collection.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnIsMeasure", + "description": "When true, this column is of type measure/calculated.", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMeasureType", + "description": "The type of measure/calculated column this is, eg: base, calcaluted, derived.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Database", + "description": "Instance of a (relational) database in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "schemaCount", + "description": "Number of schemas in this database.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Function", + "description": "Instance of a function in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "functionDefinition", + "description": "Code or set of statements that determine the output of the function.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionReturnType", + "description": "Data type of the value returned by the function.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "indexType": "STRING", + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionArguments", + "description": "Arguments that are passed in to the function.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "functionLanguage", + "description": "Programming language in which the function is written.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "indexType": "STRING", + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionType", + "description": "Type of function.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "indexType": "STRING", + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionIsExternal", + "description": "Whether the function is stored or executed externally (true) or internally (false).", + "typeName": "boolean", + "defaultValue": false, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionIsDMF", + "description": "Whether the function is a data metric function.", + "typeName": "boolean", + "defaultValue": false, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionIsSecure", + "description": "Whether sensitive information of the function is omitted for unauthorized users (true) or not (false).", + "typeName": "boolean", + "defaultValue": false, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionIsMemoizable", + "description": "Whether the function must re-compute if there are no underlying changes in the values (false) or not (true).", + "typeName": "boolean", + "defaultValue": false, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "MaterialisedView", + "description": "Instance of a materialized view in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "refreshMode", + "description": "Refresh mode for this materialized view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "indexType": "STRING", + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "refreshMethod", + "description": "Refresh method for this materialized view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "staleness", + "description": "Staleness of this materialized view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "staleSinceDate", + "description": "Time (epoch) from which this materialized view is stale, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "columnCount", + "description": "Number of columns in this materialized view.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "rowCount", + "description": "Number of rows in this materialized view.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sizeBytes", + "description": "Size of this materialized view, in bytes.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isQueryPreview", + "description": "Whether it's possible to run a preview query on this materialized view (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryPreviewConfig", + "description": "Configuration for the query preview of this materialized view.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "alias", + "description": "Alias for this materialized view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isTemporary", + "description": "Whether this materialized view is temporary (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "definition", + "description": "SQL definition of this materialized view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Procedure", + "description": "Instance of a stored procedure (routine) in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "definition", + "description": "SQL definition of the procedure.", + "typeName": "string", + "isOptional": false, + "cardinality": "SINGLE", + "valuesMinCount": 1, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "name": "Query", + "superTypes": + [ + "SQL" + ], + "description": "Instance of a query in Atlan.", + "typeVersion": "1.2", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "rawQuery", + "description": "Deprecated. See 'longRawQuery' instead.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "longRawQuery", + "description": "Raw SQL query string.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "rawQueryText", + "description": "", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "truncate_analyzer" + } + }, + { + "name": "defaultSchemaQualifiedName", + "description": "Unique name of the default schema to use for this query.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "defaultDatabaseQualifiedName", + "description": "Unique name of the default database to use for this query.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "variablesSchemaBase64", + "description": "Base64-encoded string of the variables to use in this query.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "isPrivate", + "description": "Whether this query is private (true) or shared (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isSqlSnippet", + "description": "Whether this query is a SQL snippet (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "parentQualifiedName", + "description": "Unique name of the parent collection or folder in which this query exists.", + "typeName": "string", + "indexType": "STRING", + "isOptional": false, + "cardinality": "SINGLE", + "valuesMinCount": 1, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "collectionQualifiedName", + "description": "Unique name of the collection in which this query exists.", + "typeName": "string", + "indexType": "STRING", + "isOptional": false, + "cardinality": "SINGLE", + "valuesMinCount": 1, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "isVisualQuery", + "description": "Whether this query is a visual query (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "visualBuilderSchemaBase64", + "description": "Base64-encoded string for the visual query builder.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Schema", + "description": "Instance of a database schema in Atlan.", + "typeVersion": "1.1", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "tableCount", + "description": "Number of tables in this schema.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "schemaExternalLocation", + "description": "External location of this schema, for example: an S3 object location.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "viewsCount", + "description": "Number of views in this schema.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "linkedSchemaQualifiedName", + "description": "Unique name of the Linked Schema on which this Schema is dependent. This concept is mostly applicable for linked datasets/datasource in Google BigQuery via Analytics Hub Listing", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Table", + "description": "Instance of a database table in Atlan.", + "typeVersion": "1.1", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "columnCount", + "description": "Number of columns in this table.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "rowCount", + "description": "Number of rows in this table.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sizeBytes", + "description": "Size of this table, in bytes.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "tableObjectCount", + "description": "Number of objects in this table.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "alias", + "description": "Alias for this table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isTemporary", + "description": "Whether this table is temporary (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isQueryPreview", + "description": "Whether preview queries are allowed for this table (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryPreviewConfig", + "description": "Configuration for preview queries.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocation", + "description": "External location of this table, for example: an S3 object location.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocationRegion", + "description": "Region of the external location of this table, for example: S3 region.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocationFormat", + "description": "Format of the external location of this table, for example: JSON, CSV, PARQUET, etc.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isPartitioned", + "description": "Whether this table is partitioned (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "partitionStrategy", + "description": "Partition strategy for this table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "partitionCount", + "description": "Number of partitions in this table.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "tableDefinition", + "description": "Definition of the table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "partitionList", + "description": "List of partitions in this table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isSharded", + "description": "Whether this table is a sharded table (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "tableType", + "description": "Type of the table.", + "typeName": "table_type", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "icebergCatalogName", + "description": "Iceberg table catalog name (can be any user defined name)", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "icebergTableType", + "description": "Iceberg table type (managed vs unmanaged)", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "icebergCatalogSource", + "description": "Iceberg table catalog type (glue, polaris, snowflake)", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "icebergCatalogTableName", + "description": "Catalog table name (actual table name on the catalog side).", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "tableImpalaParameters", + "description": "Extra attributes for Impala", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": false + }, + { + "name": "icebergCatalogTableNamespace", + "description": "Catalog table namespace (actual database name on the catalog side).", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "tableExternalVolumeName", + "description": "External volume name for the table.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "icebergTableBaseLocation", + "description": "Iceberg table base location inside the external volume.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "tableRetentionTime", + "description": "Data retention time in days.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "name": "TablePartition", + "superTypes": + [ + "SQL" + ], + "description": "Instance of a database table partition in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "constraint", + "description": "Constraint that defines this table partition.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "columnCount", + "description": "Number of columns in this partition.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "rowCount", + "description": "Number of rows in this partition.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sizeBytes", + "description": "Size of this partition, in bytes.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "alias", + "description": "Alias for this partition.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isTemporary", + "description": "Whether this partition is temporary (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isQueryPreview", + "description": "Whether preview queries for this partition are allowed (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryPreviewConfig", + "description": "Configuration for the preview queries.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocation", + "description": "External location of this partition, for example: an S3 object location.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocationRegion", + "description": "Region of the external location of this partition, for example: S3 region.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocationFormat", + "description": "Format of the external location of this partition, for example: JSON, CSV, PARQUET, etc.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isPartitioned", + "description": "Whether this partition is further partitioned (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "partitionStrategy", + "description": "Partition strategy of this partition.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "partitionCount", + "description": "Number of sub-partitions of this partition.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "partitionList", + "description": "List of sub-partitions in this partition.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "View", + "description": "Instance of a database view in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "columnCount", + "description": "Number of columns in this view.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "rowCount", + "description": "Number of rows in this view.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sizeBytes", + "description": "Size of this view, in bytes.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isQueryPreview", + "description": "Whether preview queries are allowed on this view (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryPreviewConfig", + "description": "Configuration for preview queries on this view.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "alias", + "description": "Alias for this view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isTemporary", + "description": "Whether this view is temporary (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "definition", + "description": "SQL definition of this view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "SaaS", + "description": "Base class for SaaS application assets.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "SchemaRegistry", + "description": "Instance of a schema registry in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "schemaRegistrySchemaType", + "typeName": "SchemaRegistrySchemaType", + "description": "Type of language or specification used to define the schema, for example: JSON, Protobuf, etc.", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "schemaRegistrySchemaId", + "typeName": "string", + "description": "Unique identifier for schema definition set by the schema registry.", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + } + ] + }, + { + "name": "Tag", + "description": "Base class for all (source-specific) tag assets.", + "superTypes": + [ + "Catalog" + ], + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "tagId", + "description": "Unique identifier of the tag in the source system.", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "tagAttributes", + "description": "Attributes associated with the tag in the source system.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "tagAllowedValues", + "description": "Allowed values for the tag in the source system. These are denormalized from tagAttributes for ease of querying.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "mappedClassificationName", + "description": "Name of the classification in Atlan that is mapped to this tag.", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "SourceTag", + "category": "ENTITY", + "description": "Instance of a source system-imported tag in Atlan.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "tagCustomConfiguration", + "description": "Specifies custom configuration elements based on the system the tag is being imported from.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": false, + "indexType": "STRING" + } + ], + "superTypes": + [ + "Tag" + ] + }, + { + "name": "TagAttachment", + "description": "Represents Source tag association asset", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "tagQualifiedName", + "description": "Represents associated source tag's qualified name", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "tagAttachmentStringValue", + "typeName": "string", + "description": "Represents associated tag value", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + } + ] + }, + { + "name": "Cloud", + "description": "Base class for cloud assets.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [] + }, + { + "superTypes": + [ + "Asset" + ], + "name": "Connection", + "description": "Instance of a connection to a data source in Atlan.", + "typeVersion": "1.2", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "category", + "description": "Type of connection, for example WAREHOUSE, RDBMS, etc.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "subCategory", + "description": "Subcategory of this connection.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "host", + "description": "Host name of this connection's source.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "port", + "description": "Port number to this connection's source.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "allowQuery", + "description": "Whether using this connection to run queries on the source is allowed (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "allowQueryPreview", + "description": "Whether using this connection to run preview queries on the source is allowed (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryPreviewConfig", + "description": "Configuration for preview queries.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryConfig", + "description": "Query config for this connection.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "credentialStrategy", + "description": "Credential strategy to use for this connection for queries.", + "typeName": "string", + "defaultValue": "default", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "previewCredentialStrategy", + "description": "Credential strategy to use for this connection for preview queries.", + "typeName": "string", + "indexType": "STRING", + "defaultValue": "default", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "policyStrategy", + "description": "Policy strategy is a configuration that determines whether the Atlan policy will be applied to the results of insight queries and whether the query will be rewritten, applicable for stream api call made from insight screen", + "typeName": "string", + "indexType": "STRING", + "defaultValue": "default", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "policyStrategyForSamplePreview", + "description": "Policy strategy is a configuration that determines whether the Atlan policy will be applied to the results of insight queries and whether the query will be rewritten. policyStrategyForSamplePreview config is applicable for sample preview call from assets screen", + "typeName": "string", + "indexType": "STRING", + "defaultValue": "default", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "queryUsernameStrategy", + "description": "Username strategy to use for this connection for queries.", + "typeName": "query_username_strategy", + "indexType": "STRING", + "defaultValue": "connectionUsername", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "rowLimit", + "description": "Maximum number of rows that can be returned for the source.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryTimeout", + "description": "Maximum time a query should be allowed to run before timing out.", + "typeName": "long", + "defaultValue": 10, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "defaultCredentialGuid", + "description": "Unique identifier (GUID) for the default credentials to use for this connection.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "connectorIcon", + "description": "Unused. Only the value of connectorType impacts icons.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "connectorImage", + "description": "Unused. Only the value of connectorType impacts icons.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceLogo", + "description": "Unused. Only the value of connectorType impacts icons.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isSampleDataPreviewEnabled", + "description": "Whether sample data can be previewed for this connection (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "popularityInsightsTimeframe", + "description": "Number of days over which popularity is calculated, for example 30 days.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "hasPopularityInsights", + "description": "Whether this connection has popularity insights (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "connectionDbtEnvironments", + "description": "", + "typeName": "array", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": false + }, + { + "name": "connectionSSOCredentialGuid", + "description": "Unique identifier (GUID) for the SSO credentials to use for this connection.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "useObjectStorage", + "description": "Whether to upload to S3, GCP, or another storage location (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "objectStorageUploadThreshold", + "description": "Number of rows after which results should be uploaded to storage.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "defaultValue": 100000, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "vectorEmbeddingsEnabled", + "description": "", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "vectorEmbeddingsUpdatedAt", + "description": "", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + } + ] + }, + { + "name": "ConnectionProcess", + "description": "Instance of a lineage connection process in Atlan.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "inputs", + "description": "Assets of type connection that are inputs to this connection process.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "outputs", + "description": "Assets of type connection that are outputs to this connection process.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "superTypes": + [ + "Asset" + ], + "name": "Form", + "description": "Instance of a form in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "formFields", + "description": "Fields in a form.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "formOptions", + "description": "Options of the form.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "name": "Infrastructure", + "description": "deprecated", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.1", + "attributeDefs": + [] + }, + { + "name": "Process", + "description": "Instance of a lineage process in Atlan.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "inputs", + "description": "Assets that are inputs to this process.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "outputs", + "description": "Assets that are outputs from this process.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "code", + "description": "Code that ran within the process.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sql", + "description": "SQL query that ran to produce the outputs.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "parentConnectionProcessQualifiedName", + "description": "", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": false + }, + { + "name": "ast", + "description": "Parsed AST of the code or SQL statements that describe the logic of this process.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "additionalEtlContext", + "description": "Additional Context of the ETL pipeline/notebook which creates the process.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "aiDatasetType", + "description": "Dataset type for AI Model - dataset process.", + "typeName": "AIDatasetType", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "Process" + ], + "name": "BIProcess", + "description": "Instance of business intelligence lineage in Atlan. These are used to short-circuit lineage from table-like assets directly to dashboard-like assets.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [] + }, + { + "superTypes": + [ + "Process" + ], + "name": "ColumnProcess", + "description": "Instance of a column-level lineage process in Atlan. Inputs and outputs of these processes should be columns.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [] + }, + { + "name": "ProcessExecution", + "description": "", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.0", + "attributeDefs": + [] + }, + { + "name": "AuthService", + "superTypes": [ + "Asset" + ], + "description": "Model to store auth service in Atlas", + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": [ + { + "name": "authServiceType", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "tagService", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "authServiceIsEnabled", + "typeName": "boolean", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "defaultValue": true, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "authServiceConfig", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "authServicePolicyLastSync", + "typeName": "long", + "isOptional": true, + "defaultValue": 0, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "name": "AuthPolicy", + "description": "Model to store an accesscontrol policy in Atlas", + "superTypes": [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "policyType", + "typeName": "AuthPolicyType", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyServiceName", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyCategory", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policySubCategory", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyUsers", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyGroups", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyRoles", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyActions", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyResources", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyResourceCategory", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyPriority", + "typeName": "int", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "defaultValue": 0, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "isPolicyEnabled", + "typeName": "boolean", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "defaultValue": true, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyMaskType", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyValiditySchedule", + "typeName": "array", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "defaultValue": true, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "policyResourceSignature", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "policyDelegateAdmin", + "typeName": "boolean", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "defaultValue": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyConditions", + "typeName": "array", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "name": "AccessControl", + "superTypes": [ + "Asset" + ], + "description": "Atlan Type representing parent model for Persona, Purpose", + "serviceType": "atlan", + "typeVersion": "1.4", + "attributeDefs": [ + { + "name": "isAccessControlEnabled", + "typeName": "boolean", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "defaultValue": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "denyCustomMetadataGuids", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "denyAssetTabs", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "denyAssetFilters", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "channelLink", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "denyAssetTypes", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "denyNavigationPages", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "defaultNavigation", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "displayPreferences", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "name": "Persona", + "superTypes": [ + "AccessControl" + ], + "description": "Atlan Type representing a Persona model", + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": [ + { + "name": "personaGroups", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "personaUsers", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "roleId", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "includeInNotification": false + } + ] + }, + { + "name": "Purpose", + "superTypes": [ + "AccessControl" + ], + "description": "Atlan Type representing a Purpose model", + "serviceType": "atlan", + "typeVersion": "1.2", + "attributeDefs": [ + { + "name": "purposeClassifications", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "name": "StakeholderTitle", + "description": "Instance of a stakeholder title for Domains in Atlan", + "superTypes": [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": [ + { + "name": "stakeholderTitleDomainQualifiedNames", + "description": "qualified name array representing the Domains for which this StakeholderTitle is applicable", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "superTypes": [ + "Catalog" + ], + "name": "BI", + "description": "Base class for business intelligence assets.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": [] + }, + { + "superTypes": [ + "BI" + ], + "name": "Tableau", + "description": "Base class for Tableau assets.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": [] + }, + { + "superTypes": [ + "Tableau" + ], + "name": "TableauProject", + "description": "Instance of a Tableau project in Atlan. These are used to organize other assets and for access control, and can be nested.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": [ + { + "name": "siteQualifiedName", + "description": "Unique name of the site in which this project exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "topLevelProjectQualifiedName", + "description": "Unique name of the top-level project in which this project exists, if this is a nested project.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isTopLevelProject", + "description": "Whether this project is a top-level project (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectHierarchy", + "description": "List of top-level projects with their nested child projects.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": [ + "Tableau" + ], + "name": "TableauWorkbook", + "description": "Instance of a Tableau workbook in Atlan. These contain one or more worksheets, datasources or dashboards.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": [ + { + "name": "siteQualifiedName", + "description": "Unique name of the site in which this workbook exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectQualifiedName", + "description": "Unique name of the project in which this workbook exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": { + "keyword": { + "type": "keyword" + } + } + }, + { + "name": "topLevelProjectName", + "description": "Simple name of the top-level project in which this workbook exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "topLevelProjectQualifiedName", + "description": "Unique name of the top-level project in which this workbook exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectHierarchy", + "description": "List of top-level projects with their nested child projects.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": [ + "Tableau" + ], + "name": "TableauCalculatedField", + "description": "Instance of a Tableau calculated field in Atlan. These are created by combining two or more fields using a formula, and can be created at datasource or worksheet level.", + "typeVersion": "2.0", + "serviceType": "atlan", + "attributeDefs": [ + { + "name": "siteQualifiedName", + "description": "Unique name of the site in which this calculated field exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectQualifiedName", + "description": "Unique name of the project in which this calculated field exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": { + "keyword": { + "type": "keyword" + } + } + }, + { + "name": "topLevelProjectQualifiedName", + "description": "Unique name of the top-level project in which this calculated field exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "workbookQualifiedName", + "description": "Unique name of the workbook in which this calculated field exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "datasourceQualifiedName", + "description": "Unique name of the datasource in which this calculated field exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectHierarchy", + "description": "List of top-level projects and their nested projects.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "dataCategory", + "description": "Data category of this field.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "role", + "description": "Role of this field, for example: 'dimension', 'measure', or 'unknown'.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "tableauDataType", + "description": "Data type of the field, from Tableau.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": { + "text": { + "type": "text" + } + } + }, + { + "name": "formula", + "description": "Formula for this calculated field.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "upstreamFields", + "description": "List of fields that are upstream to this calculated field.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": [ + "Tableau" + ], + "name": "TableauWorksheet", + "description": "Instance of a Tableau worksheet in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": [ + { + "name": "siteQualifiedName", + "description": "Unique name of the site in which this worksheet exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectQualifiedName", + "description": "Unique name of the project in which this worksheet exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": { + "keyword": { + "type": "keyword" + } + } + }, + { + "name": "topLevelProjectQualifiedName", + "description": "Unique name of the top-level project in which this worksheet exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectHierarchy", + "description": "List of top-level projects with their nested child projects.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "workbookQualifiedName", + "description": "Unique name of the workbook in which this worksheet exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + } + ] + } + ], + "relationshipDefs": + [ + { + "name": "UserDefRelationship", + "serviceType": "atlan", + "typeVersion": "1.0", + "description": "A generic relationship to hold relationship between any type of asset", + "relationshipLabel": "__Referenceable.userDefRelationshipTo", + "endDef1": + { + "type": "Referenceable", + "name": "userDefRelationshipTo", + "cardinality": "SET" + }, + "endDef2": + { + "type": "Referenceable", + "name": "userDefRelationshipFrom", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "toTypeLabel", + "description": "Name for the relationship when referring from endDef1 asset to endDef2 asset", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "indexType": "STRING" + }, + { + "name": "fromTypeLabel", + "description": "Name for the relationship when referring from endDef2 asset to endDef1 asset", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "indexType": "STRING" + } + ] + }, + { + "name": "AtlasGlossarySemanticAssignment", + "description": "Assigns meaning to an asset by linking the term that describes the meaning of the asset. The semantic assignment needs to be a controlled relationship when glossary definitions are used to provide classifications for the data assets and hence define how the data is to be governed.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the semantic assignment.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + }, + { + "name": "expression", + "description": "Expression that was used to create the semantic assignment.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + }, + { + "name": "status", + "description": "Status of the semantic assignment, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + }, + { + "name": "confidence", + "description": "Level of confidence (0-100%) in the correctness of the semantic assignment, typically used by discovery engines.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true + }, + { + "name": "createdBy", + "description": "Username of the user who created the semantic assignment.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + }, + { + "name": "steward", + "description": "User responsible for assessing the semantic assignment and deciding if it should be approved or not.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + }, + { + "name": "source", + "description": "Source of the semantic assignment.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + } + ], + "relationshipCategory": "ASSOCIATION", + "propagateTags": "ONE_TO_TWO", + "endDef1": + { + "type": "AtlasGlossaryTerm", + "name": "assignedEntities", + "description": "Assets assigned this term.", + "isContainer": false, + "cardinality": "SET" + }, + "endDef2": + { + "type": "Referenceable", + "name": "meanings", + "description": "Glossary terms that are linked to this asset.", + "isContainer": false, + "cardinality": "SET" + } + }, + { + "name": "AtlasGlossaryTermAnchor", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Links each term to exactly one glossary, its home glossary. If the glossary is deleted, then so are all the terms linked to it.", + "endDef1": + { + "name": "terms", + "description": "Terms contained within this glossary.", + "type": "AtlasGlossary", + "cardinality": "SET", + "isContainer": true + }, + "endDef2": + { + "name": "anchor", + "description": "Glossary in which this term is contained.", + "type": "AtlasGlossaryTerm", + "cardinality": "SINGLE" + }, + "relationshipCategory": "COMPOSITION", + "propagateTags": "NONE" + }, + { + "name": "AtlasGlossaryTermCategorization", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Organizes terms into categories. A term may be linked with many categories and a category may have many terms linked to it. This relationship may connect terms and categories both in the same glossary or in different glossaries.", + "endDef1": + { + "name": "terms", + "description": "Terms organized within this category.", + "type": "AtlasGlossaryCategory", + "cardinality": "SET", + "isContainer": true + }, + "endDef2": + { + "name": "categories", + "description": "Categories within which this term is organized.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "AGGREGATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the term categorization.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "status", + "description": "Status of the term categorization, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "AtlasGlossaryCategoryAnchor", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Links each category to exactly one glossary, its home glossary. If the glossary is deleted then so are all the categories linked to it.", + "endDef1": + { + "name": "categories", + "description": "Categories contained within this glossary.", + "type": "AtlasGlossary", + "cardinality": "SET", + "isContainer": true + }, + "endDef2": + { + "name": "anchor", + "description": "Glossary in which this category is contained.", + "type": "AtlasGlossaryCategory", + "cardinality": "SINGLE" + }, + "relationshipCategory": "COMPOSITION", + "propagateTags": "NONE" + }, + { + "name": "AtlasGlossaryCategoryHierarchyLink", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Organizes categories into a hierarchy to, for example, create a structure for a taxonomy. A category may have none or one super-categories. This super-category may be in a different glossary.", + "endDef1": + { + "name": "childrenCategories", + "description": "Child categories organized within this category.", + "type": "AtlasGlossaryCategory", + "cardinality": "SET", + "isContainer": true + }, + "endDef2": + { + "name": "parentCategory", + "description": "Parent category in which this category is located (or empty if this is a root-level category).", + "type": "AtlasGlossaryCategory", + "cardinality": "SINGLE" + }, + "relationshipCategory": "AGGREGATION", + "propagateTags": "NONE" + }, + { + "name": "AtlasGlossaryRelatedTerm", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Links terms that may also be of interest. It is like a 'see also' link in a dictionary.", + "endDef1": + { + "name": "seeAlso", + "description": "Linked terms that may also be of interest.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "seeAlso", + "description": "Linked terms that may also be of interest.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Explains why the linked term is of interest.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the related term.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the related term assignment, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the related term assignment.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossarySynonym", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Terms that have the same (or a very similar) meaning, in the same language.", + "endDef1": + { + "name": "synonyms", + "description": "Terms that have the same (or a very similar) meaning, in the same language.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "synonyms", + "description": "Terms that have the same (or a very similar) meaning, in the same language.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the synonym assignment, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryAntonym", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Terms that have the opposite (or near opposite) meaning, in the same language.", + "endDef1": + { + "name": "antonyms", + "description": "Terms that have the opposite (or near opposite) meaning, in the same language.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "antonyms", + "description": "Terms that have the opposite (or near opposite) meaning, in the same language.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression that was used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryPreferredTerm", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Indicates term(s) should be used in place of another. This relationship can be used to encourage adoption of newer vocabularies. This is a weaker version of ReplacementTerm.", + "endDef1": + { + "name": "preferredTerms", + "description": "Preferred term(s) to use instead of this term.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "preferredToTerms", + "description": "Other term(s) that are less common or less preferred than this term.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryReplacementTerm", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Indicates term(s) must be used instead of another. This is stronger version of the PreferredTerm.", + "endDef1": + { + "name": "replacedBy", + "description": "Term(s) that must no longer be used.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "replacementTerms", + "description": "Term(s) that must be used instead.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryTranslation", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Related terms that represent the same meaning, but each written in a different language. Hence one is a translation of the other. The language of each term is defined in the Glossary object that anchors the term.", + "endDef1": + { + "name": "translatedTerms", + "description": "Term(s) that are a translation of this term.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "translationTerms", + "description": "Term(s) for which this term is a translation.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryIsARelationship", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Relationship between a more abstract and more concrete concept. For example, this relationship would be use to say that 'Cat' ISA 'Animal'.", + "endDef1": + { + "name": "classifies", + "description": "More general term that defines a group of terms, for example: 'animal'.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "isA", + "description": "More specific term that is a sub-class of another term, for example: 'cat'.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryValidValue", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Terms that represent valid values for another, for example: 'red', 'blue', 'green' could all be valid values for a term 'color'.", + "endDef1": + { + "name": "validValuesFor", + "description": "Term for which this is a valid value.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "validValues", + "description": "Valid values for this term.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "schema_calculation_view", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.calculationViews", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "calculationViews", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": + { + "type": "CalculationView", + "name": "atlanSchema", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": false + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "table_columns", + "description": "Containment relationship between table (parent) and columns (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Table.columns", + "serviceType": "atlan", + "endDef1": + { + "type": "Table", + "name": "columns", + "description": "Columns that exist within this table.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Column", + "name": "table", + "description": "Table in which this column exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "column_nestedColumns", + "description": "Hierarchical relationship between nested columns.", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Column.nestedColumns", + "serviceType": "atlan", + "endDef1": + { + "type": "Column", + "name": "nestedColumns", + "description": "Nested columns that exist within this column.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Column", + "name": "parentColumn", + "description": "Column in which this sub-column is nested.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "TWO_TO_ONE" + }, + { + "name": "table_partition_columns", + "description": "Containment relationship between table partition (parent) and columns (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__TablePartition.columns", + "serviceType": "atlan", + "endDef1": + { + "type": "TablePartition", + "name": "columns", + "description": "Columns that exist within this table partition.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Column", + "name": "tablePartition", + "description": "Table partition that contains this column.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "view_columns", + "description": "Containment relationship between view (parent) and columns (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__View.columns", + "serviceType": "atlan", + "endDef1": + { + "type": "View", + "name": "columns", + "description": "Columns that exist within this view.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Column", + "name": "view", + "description": "View in which this column exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "calculation_view_columns", + "description": "Containment relationship between calculation view (parent) and columns (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__CalculationView.columns", + "serviceType": "atlan", + "endDef1": + { + "type": "CalculationView", + "name": "columns", + "description": "Columns that exist within this sap calculate view.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": + { + "type": "Column", + "name": "calculationView", + "description": "Calculate view in which this column exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": false + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "materialised_view_columns", + "description": "Containment relationship between materialized view (parent) and columns (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__materialised_view.columns", + "serviceType": "atlan", + "endDef1": + { + "type": "MaterialisedView", + "name": "columns", + "description": "Columns that exist within this materialized view.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Column", + "name": "materialisedView", + "description": "Materialized view in which this column exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "foreign_key_columns", + "description": "Inter-relationship between foreign key columns.", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Column.foreignKeyTo", + "serviceType": "atlan", + "endDef1": + { + "type": "Column", + "name": "foreignKeyTo", + "description": "Columns that use this column as a foreign key.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": + { + "type": "Column", + "name": "foreignKeyFrom", + "description": "Column this foreign key column refers to.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": false + }, + "propagateTags": "NONE" + }, + { + "name": "schema_functions", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.functions", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "functions", + "description": "Functions that exist within this schema.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Function", + "name": "functionSchema", + "description": "Schema in which this function exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "schema_materialised_views", + "description": "Containment relationship between schema (parent) and materialized views (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.materialised_views", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "materialisedViews", + "description": "Materialized views that exist within this schema.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "MaterialisedView", + "name": "atlanSchema", + "description": "Schema in which this materialized view exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "schema_procedures", + "description": "Containment relationship between schema (parent) and stored procedures (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.procedures", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "procedures", + "description": "Stored procedures that exist within this schema.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Procedure", + "name": "atlanSchema", + "description": "Schema in which this stored procedure exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "table_queries", + "description": "Inter-relationship between tables and queries.", + "typeVersion": "1.0", + "relationshipCategory": "ASSOCIATION", + "relationshipLabel": "__Table.queries", + "serviceType": "atlan", + "endDef1": + { + "type": "Table", + "name": "queries", + "description": "Queries that access this table.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Query", + "name": "tables", + "description": "Tables this query accesses.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "propagateTags": "NONE" + }, + { + "name": "view_queries", + "description": "Inter-relationship between views and queries.", + "typeVersion": "1.0", + "relationshipCategory": "ASSOCIATION", + "relationshipLabel": "__View.queries", + "serviceType": "atlan", + "endDef1": + { + "type": "View", + "name": "queries", + "description": "Queries that access this view.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Query", + "name": "views", + "description": "Views this query accesses.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "propagateTags": "NONE" + }, + { + "name": "column_queries", + "description": "Inter-relationship between columns and queries.", + "typeVersion": "1.0", + "relationshipCategory": "ASSOCIATION", + "relationshipLabel": "__Column.queries", + "serviceType": "atlan", + "endDef1": + { + "type": "Column", + "name": "queries", + "description": "Queries that access this column.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Query", + "name": "columns", + "description": "Columns this query accesses.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "propagateTags": "NONE" + }, + { + "name": "database_schemas", + "description": "Containment relationship between database (parent) and schemas (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Database.schemas", + "serviceType": "atlan", + "endDef1": + { + "type": "Database", + "name": "schemas", + "description": "Schemas that exist within this database.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Schema", + "name": "database", + "description": "Database in which this schema exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "schema_tables", + "description": "Containment relationship between schema (parent) and tables (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.tables", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "tables", + "description": "Tables that exist within this schema.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Table", + "name": "atlanSchema", + "description": "Schema in which this table exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "table_facts_dimensions", + "typeVersion": "1.0", + "description": "Relationship between fact tables and dimension tables.", + "relationshipCategory": "ASSOCIATION", + "relationshipLabel": "__Table.dimensions", + "serviceType": "atlan", + "endDef1": + { + "type": "Table", + "name": "dimensions", + "description": "", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": + { + "type": "Table", + "name": "facts", + "description": "", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "propagateTags": "NONE" + }, + { + "name": "partition_tables", + "description": "Containment relationship between table (parent) and partitions (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Table.partitions", + "serviceType": "atlan", + "endDef1": + { + "type": "Table", + "name": "partitions", + "description": "Partitions that exist within this table.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "TablePartition", + "name": "parentTable", + "description": "Table in which this partition exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "partition_parent_table_partition_child_tables", + "description": "Hierarchical relationship between table partitions.", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__TablePartition.childTablePartitions", + "serviceType": "atlan", + "endDef1": + { + "type": "TablePartition", + "name": "childTablePartitions", + "description": "Partitions that exist within this partition.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "TablePartition", + "name": "parentTablePartition", + "description": "Partition in which this partition exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "schema_views", + "description": "Containment relationship between schema (parent) and views (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.views", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "views", + "description": "Views that exist within this schema.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "View", + "name": "atlanSchema", + "description": "Schema in which this view exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "connection_process_inputs", + "description": "Inter-relationships between inputs and connection processes.", + "serviceType": "atlan", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__ConnectionProcess.inputs", + "endDef1": + { + "type": "ConnectionProcess", + "name": "inputs", + "description": "Connection assets that are inputs to this connection process.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Connection", + "name": "inputToConnectionProcesses", + "description": "Connection process to which this asset provides input.", + "isContainer": false, + "cardinality": "SET" + }, + "propagateTags": "NONE" + }, + { + "name": "connection_process_outputs", + "description": "Inter-relationships between outputs and connection processes.", + "serviceType": "atlan", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__ConnectionProcess.outputs", + "endDef1": + { + "type": "ConnectionProcess", + "name": "outputs", + "description": "Connection assets that are outputs from this connection process", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Connection", + "name": "outputFromConnectionProcesses", + "description": "Connection processs from which this asset is produced as output.", + "isContainer": false, + "cardinality": "SET" + }, + "propagateTags": "NONE" + }, + { + "name": "catalog_process_inputs", + "description": "Inter-relationships between inputs and processes.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Process.inputs", + "endDef1": + { + "type": "Process", + "name": "inputs", + "description": "Assets that are inputs to this process.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Catalog", + "name": "inputToProcesses", + "description": "Processes to which this asset provides input.", + "isContainer": false, + "cardinality": "SET" + }, + "propagateTags": "TWO_TO_ONE" + }, + { + "name": "process_catalog_outputs", + "description": "Inter-relationships between outputs and processes.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Process.outputs", + "endDef1": + { + "type": "Process", + "name": "outputs", + "description": "Assets that are outputs from this process.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Catalog", + "name": "outputFromProcesses", + "description": "Processes from which this asset is produced as output.", + "isContainer": false, + "cardinality": "SET" + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "column_lineage", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Process.columnProcesses", + "serviceType": "atlan", + "endDef1": + { + "type": "Process", + "name": "columnProcesses", + "description": "Processes that detail column-level lineage for this process.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "ColumnProcess", + "name": "process", + "description": "Parent process that contains this column-level process.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "__AtlasUserProfile_savedsearches", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "relationshipCategory": "COMPOSITION", + "endDef1": { + "type": "__AtlasUserProfile", + "name": "savedSearches", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": { + "type": "__AtlasUserSavedSearch", + "name": "userProfile", + "isContainer": false, + "cardinality": "SINGLE" + }, + "propagateTags": "NONE" + }, + { + "name": "access_control_policies", + "typeVersion": "1.1", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__AccessControl.policies", + "serviceType": "atlan", + "endDef1": + { + "type": "AccessControl", + "name": "policies", + "isContainer": true, + "cardinality": "SET" + }, + "endDef2": + { + "type": "AuthPolicy", + "name": "accessControl", + "isContainer": false, + "cardinality": "SINGLE" + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "tableau_project_tableau_workbook", + "description": "Containment relationship between project (parent) and workbooks (children).", + "typeVersion": "1.1", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__TableauProject.workbooks", + "serviceType": "atlan", + "propagateTags": "ONE_TO_TWO", + "endDef1": { + "type": "TableauProject", + "name": "workbooks", + "description": "Workbooks that exist within this project.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": { + "type": "TableauWorkbook", + "name": "project", + "description": "Project in which this workbook exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": false + } + }, + { + "name": "tableau_worksheets_tableau_calculated_fields", + "description": "Inter-relationship between calculated fields and worksheets.", + "typeVersion": "2.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__TableauWorksheet.calculatedFields", + "serviceType": "atlan", + "endDef1": { + "type": "TableauWorksheet", + "name": "calculatedFields", + "description": "Calculated fields that are used in this worksheet.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": { + "type": "TableauCalculatedField", + "name": "worksheets", + "description": "Worksheets that use this calculated field.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": false + } + } + ], + "businessMetadataDefs": + [] +} \ No newline at end of file diff --git a/webapp/src/test/resources/deploy/models/0000-Area0/patches/002-base_model_add_service_type.json b/webapp/src/test/resources/deploy/models/0000-Area0/patches/002-base_model_add_service_type.json new file mode 100644 index 00000000000..8e375f7c9e7 --- /dev/null +++ b/webapp/src/test/resources/deploy/models/0000-Area0/patches/002-base_model_add_service_type.json @@ -0,0 +1,58 @@ +{ + "patches": [ + { + "id": "TYPEDEF_PATCH_0000_003", + "description": "Set serviceType 'atlas_core' to __internal", + "action": "SET_SERVICE_TYPE", + "typeName": "__internal", + "applyToVersion": "1.0", + "updateToVersion": "1.1", + "serviceType": "atlas_core" + }, + { + "id": "TYPEDEF_PATCH_0000_008", + "description": "Set serviceType 'atlas_core' to AtlasServer", + "action": "SET_SERVICE_TYPE", + "typeName": "AtlasServer", + "applyToVersion": "1.0", + "updateToVersion": "1.1", + "serviceType": "atlas_core" + }, + { + "id": "TYPEDEF_PATCH_0000_009", + "description": "Set serviceType 'atlas_core' to __AtlasUserProfile", + "action": "SET_SERVICE_TYPE", + "typeName": "__AtlasUserProfile", + "applyToVersion": "1.0", + "updateToVersion": "1.1", + "serviceType": "atlas_core" + }, + { + "id": "TYPEDEF_PATCH_0000_010", + "description": "Set serviceType 'atlas_core' to __AtlasUserSavedSearch", + "action": "SET_SERVICE_TYPE", + "typeName": "__AtlasUserSavedSearch", + "applyToVersion": "1.0", + "updateToVersion": "1.1", + "serviceType": "atlas_core" + }, + { + "id": "TYPEDEF_PATCH_0000_011", + "description": "Set serviceType 'atlas_core' to __ExportImportAuditEntry", + "action": "SET_SERVICE_TYPE", + "typeName": "__ExportImportAuditEntry", + "applyToVersion": "1.0", + "updateToVersion": "1.1", + "serviceType": "atlas_core" + }, + { + "id": "TYPEDEF_PATCH_0000_014", + "description": "Set serviceType 'atlas_core' to __AtlasUserProfile_savedsearches", + "action": "SET_SERVICE_TYPE", + "typeName": "__AtlasUserProfile_savedsearches", + "applyToVersion": "1.0", + "updateToVersion": "1.1", + "serviceType": "atlas_core" + } + ] +} diff --git a/webapp/src/test/resources/deploy/models/0000-Area0/patches/006-base_model_add_atlas_operation_attributes.json b/webapp/src/test/resources/deploy/models/0000-Area0/patches/006-base_model_add_atlas_operation_attributes.json new file mode 100644 index 00000000000..6d9639107bb --- /dev/null +++ b/webapp/src/test/resources/deploy/models/0000-Area0/patches/006-base_model_add_atlas_operation_attributes.json @@ -0,0 +1,35 @@ +{ + "patches": [ + { + "id": "TYPEDEF_PATCH_0006_001", + "description": "Add additional operations in Atlas", + "action": "UPDATE_ENUMDEF", + "typeName": "atlas_operation", + "applyToVersion": "1.0", + "updateToVersion": "1.1", + "params": null, + "elementDefs": [ + { + "ordinal": 5, + "value": "TYPE_DEF_CREATE" + }, + { + "ordinal": 6, + "value": "TYPE_DEF_UPDATE" + }, + { + "ordinal": 7, + "value": "TYPE_DEF_DELETE" + }, + { + "ordinal": 8, + "value": "SERVER_START" + }, + { + "ordinal": 9, + "value": "SERVER_STATE_ACTIVE" + } + ] + } + ] +} diff --git a/webapp/src/test/resources/deploy/models/0000-Area0/patches/007_all_custom_models.json b/webapp/src/test/resources/deploy/models/0000-Area0/patches/007_all_custom_models.json new file mode 100644 index 00000000000..32f1ec6b63b --- /dev/null +++ b/webapp/src/test/resources/deploy/models/0000-Area0/patches/007_all_custom_models.json @@ -0,0 +1,9096 @@ +{ + "classificationDefs": + [], + "enumDefs": + [ + { + "category": "ENUM", + "name": "SourceCostUnitType", + "description": "Unit used when calculating cost of source queries.", + "serviceType": "atlas_core", + "typeVersion": "1.1", + "elementDefs": + [ + { + "value": "Credits", + "ordinal": 0 + }, + { + "value": "bytes", + "ordinal": 1 + }, + { + "value": "slot-ms", + "ordinal": 2 + } + ] + }, + { + "name": "AtlasGlossaryTermRelationshipStatus", + "description": "How reliable the relationship is between two glossary terms.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "ordinal": 0, + "value": "DRAFT", + "description": "DRAFT means the relationship is under development." + }, + { + "ordinal": 1, + "value": "ACTIVE", + "description": "ACTIVE means the relationship is validated and in use." + }, + { + "ordinal": 2, + "value": "DEPRECATED", + "description": "DEPRECATED means the the relationship is being phased out." + }, + { + "ordinal": 3, + "value": "OBSOLETE", + "description": "OBSOLETE means that the relationship should not be used anymore." + }, + { + "ordinal": 99, + "value": "OTHER", + "description": "OTHER means that there is another status." + } + ] + }, + { + "name": "AtlasGlossaryTermAssignmentStatus", + "description": "How much the semantic assignment should be trusted.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "value": "DISCOVERED", + "ordinal": 0, + "description": "DISCOVERED means that the semantic assignment was added by a discovery engine." + }, + { + "value": "PROPOSED", + "ordinal": 1, + "description": "PROPOSED means that the semantic assignment was proposed by person - they may be a subject matter expert, or consumer of the Referenceable asset" + }, + { + "value": "IMPORTED", + "ordinal": 2, + "description": "IMPORTED means that the semantic assignment has been imported from outside of the open metadata cluster" + }, + { + "value": "VALIDATED", + "ordinal": 3, + "description": "VALIDATED means that the semantic assignment has been reviewed and is highly trusted." + }, + { + "value": "DEPRECATED", + "ordinal": 4, + "description": "DEPRECATED means that the semantic assignment is being phased out. There may be another semantic assignment to the Referenceable that will ultimately replace this one." + }, + { + "value": "OBSOLETE", + "ordinal": 5, + "description": "OBSOLETE means that the semantic assignment is no longer in use," + }, + { + "value": "OTHER", + "ordinal": 6, + "description": "OTHER means that the semantic assignment value does not match any of the other Term Assignment Status values" + } + ] + }, + { + "name": "AtlasGlossaryType", + "description": "Defines type of the Glossary", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "ordinal": 0, + "value": "KNOWLEDGE_HUB", + "description": "Glossary will be used to store knowledge as documents" + } + ] + }, + { + "name": "AtlasGlossaryCategoryType", + "description": "Defines type if the Glossary Category", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "ordinal": 0, + "value": "DOCUMENT_FOLDER", + "description": "Document Folder will contain Documents" + } + ] + }, + { + "name": "AtlasGlossaryTermType", + "description": "Defines type if the Glossary Term", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "ordinal": 0, + "value": "DOCUMENT", + "description": "Will represent Document as knowledge hub" + } + ] + }, + { + "name": "table_type", + "description": "Type of the table.", + "typeVersion": "1.0", + "serviceType": "atlas_core", + "elementDefs": + [ + { + "ordinal": 0, + "value": "TEMPORARY" + }, + { + "ordinal": 1, + "value": "ICEBERG" + }, + { + "ordinal": 2, + "value": "KUDU" + } + ] + }, + { + "category": "ENUM", + "name": "SchemaRegistrySchemaType", + "description": "The SchemaRegistrySchemaType enum defines the possible values for languages that are supported as schema definition", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "value": "AVRO", + "ordinal": 0 + }, + { + "value": "JSON", + "ordinal": 1 + }, + { + "value": "PROTOBUF", + "ordinal": 2 + } + ] + }, + { + "category": "ENUM", + "name": "query_username_strategy", + "description": "Defines username used to override while making queries", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "value": "connectionUsername", + "ordinal": 0 + }, + { + "value": "atlanUsername", + "ordinal": 1 + } + ] + }, + { + "name": "FormFieldType", + "description": "Type of the field in a form.", + "typeVersion": "1.0", + "serviceType": "atlas_core", + "elementDefs": + [ + { + "ordinal": 0, + "value": "INT" + }, + { + "ordinal": 1, + "value": "STRING" + }, + { + "ordinal": 2, + "value": "DATE" + }, + { + "ordinal": 3, + "value": "BOOLEAN" + }, + { + "ordinal": 4, + "value": "LONG" + }, + { + "ordinal": 5, + "value": "JSON" + } + ] + }, + { + "name": "FormFieldDimension", + "description": "Type of the field's value in a form.", + "typeVersion": "1.0", + "serviceType": "atlas_core", + "elementDefs": + [ + { + "ordinal": 0, + "value": "SINGLE" + }, + { + "ordinal": 1, + "value": "MULTI" + } + ] + }, + { + "category": "ENUM", + "name": "AIDatasetType", + "description": "Defines the possible types on AI dataset.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "elementDefs": + [ + { + "value": "TRAINING", + "ordinal": 0 + }, + { + "value": "TESTING", + "ordinal": 1 + }, + { + "value": "INFERENCE", + "ordinal": 2 + }, + { + "value": "VALIDATION", + "ordinal": 3 + }, + { + "value": "OUTPUT", + "ordinal": 4 + } + ] + }, + { + "name": "certificate_status", + "description": "Defines possible certificate statuses.", + "typeVersion": "1.1", + "serviceType": "atlas_core", + "elementDefs": + [ + { + "ordinal": 0, + "value": "DEPRECATED" + }, + { + "ordinal": 1, + "value": "DRAFT" + }, + { + "ordinal": 2, + "value": "VERIFIED" + } + ] + }, + { + "name": "google_datastudio_asset_type", + "description": "Defines the types of assets available in Google Data Studio.", + "typeVersion": "1.0", + "serviceType": "atlas_core", + "elementDefs": + [ + { + "ordinal": 0, + "value": "REPORT" + }, + { + "ordinal": 1, + "value": "DATA_SOURCE" + } + ] + }, + { + "name": "powerbi_endorsement", + "description": "Defines available endorsement statuses for Power BI assets.", + "typeVersion": "1.0", + "serviceType": "atlas_core", + "category": "ENUM", + "elementDefs": + [ + { + "ordinal": 0, + "value": "Promoted" + }, + { + "ordinal": 1, + "value": "Certified" + } + ] + }, + { + "category": "ENUM", + "name": "AuthPolicyType", + "description": "Policy Item type", + "serviceType": "atlas_core", + "typeVersion": "1.1", + "elementDefs": + [ + { + "value": "allow", + "ordinal": 0 + }, + { + "value": "deny", + "ordinal": 1 + }, + { + "value": "allowExceptions", + "ordinal": 2 + }, + { + "value": "denyExceptions", + "ordinal": 3 + }, + { + "value": "dataMask", + "ordinal": 4 + }, + { + "value": "rowFilter", + "ordinal": 5 + } + ] + }, + { + "category": "ENUM", + "name": "AuthPolicyCategory", + "description": "Policy category", + "serviceType": "atlas_core", + "typeVersion": "1.1", + "elementDefs": [ + { + "value": "bootstrap", + "ordinal": 0 + }, + { + "value": "persona", + "ordinal": 1 + }, + { + "value": "purpose", + "ordinal": 2 + } + ] + }, + { + "category": "ENUM", + "name": "AuthPolicyResourceCategory", + "description": "Policy resource category", + "serviceType": "atlas_core", + "typeVersion": "1.1", + "elementDefs": + [ + { + "value": "ENTITY", + "ordinal": 0 + }, + { + "value": "RELATIONSHIP", + "ordinal": 1 + }, + { + "value": "TAG", + "ordinal": 2 + }, + { + "value": "CUSTOM", + "ordinal": 3 + }, + { + "value": "TYPEDEFS", + "ordinal": 4 + }, + { + "value": "ADMIN", + "ordinal": 5 + } + ] + } + ], + "structDefs": + [ + { + "name": "PopularityInsights", + "description": "Detailed information about an asset's usage or popularity based on aggregated queries.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "recordUser", + "description": "Username or email of the user who ran the queries.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true + }, + { + "name": "recordQuery", + "description": "Query run at source.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": false + }, + { + "name": "recordQueryDuration", + "description": "Duration for which the query ran at source.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true + }, + { + "name": "recordQueryCount", + "description": "Number of queries run by the user.", + "typeName": "long", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true + }, + { + "name": "recordTotalUserCount", + "description": "Total number of users who ran queries.", + "typeName": "long", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true + }, + { + "name": "recordComputeCost", + "description": "Total compute cost for running all queries.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "recordMaxComputeCost", + "description": "Maximum compute cost across all query runs.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "recordComputeCostUnit", + "description": "Unit of measure for recordComputeCost.", + "typeName": "SourceCostUnitType", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "recordLastTimestamp", + "typeName": "date", + "description": "Timestamp of last operation or query run by the user.", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false + }, + { + "name": "recordWarehouse", + "description": "Name of the warehouse on which the queries were run.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "name": "StarredDetails", + "description": "Detailed information about the users who have starred an asset.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "assetStarredBy", + "description": "Username of the user who starred the asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true + }, + { + "name": "assetStarredAt", + "typeName": "date", + "description": "Time at which the user starred the asset.", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false + } + ] + }, + { + "name": "Histogram", + "description": "Detailed information representing a histogram of values.", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "boundaries", + "description": "Boundaries of the histogram.", + "typeName": "array", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + }, + { + "name": "frequencies", + "description": "Frequencies of the histogram.", + "typeName": "array", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + } + ] + }, + { + "name": "ColumnValueFrequencyMap", + "description": "Detailed information representing a column value and it's frequency.", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "columnValue", + "description": "Sample value for the column.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "columnValueFrequency", + "description": "Frequency of the sample value in the column.", + "typeName": "long", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "FormField", + "description": "Structure of a field in a form.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "formFieldId", + "description": "Unique identifier of the field in a form.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "formFieldName", + "description": "Name of the field in a form.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "formFieldType", + "description": "Type of the field in a form.", + "typeName": "FormFieldType", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "formFieldDimension", + "description": "Dimension of the field's value in a form.", + "typeName": "FormFieldDimension", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "formFieldOptions", + "description": "Options of the field in a form.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "name": "AuthPolicyValiditySchedule", + "description": "Validity schedule struct for policy", + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "policyValidityScheduleStartTime", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + }, + { + "name": "policyValidityScheduleEndTime", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + }, + { + "name": "policyValidityScheduleTimezone", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + } + ] + }, + { + "name": "AuthPolicyCondition", + "description": "Policy condition schedule struct", + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "policyConditionType", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + }, + { + "name": "policyConditionValues", + "typeName": "array", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": false, + "isUnique": false + } + ] + }, + { + "name": "SourceTagAttachmentValue", + "description": "Detailed information about the value of a source tag's attachment to an asset.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": [ + { + "name": "tagAttachmentKey", + "description": "Attachment key, for example: 'has_pii' or 'type_pii'.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "tagAttachmentValue", + "description": "Attachment value, for example: 'true' or 'email'.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + } + ] + }, + { + "name": "SourceTagAttribute", + "description": "Detailed information about a source tag's attributes.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": [ + { + "name": "tagAttributeKey", + "description": "Attribute key, for example: 'allowedValues' or 'enabled'.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "tagAttributeValue", + "description": "Attribute value, for example: '[\"Private\", \"PII\"]' for allowedValues key or 'true' for enabled key.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "tagAttributeProperties", + "description": "Properties of the attribute.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + } + ] + }, + { + "name": "SourceTagAttachment", + "description": "Detailed information about the attachment of a tag to an Atlan asset, synced from source.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": [ + { + "name": "sourceTagName", + "description": "Simple name of the source tag.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "indexTypeESConfig": { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": { + "keyword": { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "sourceTagQualifiedName", + "description": "Unique name of the source tag, in Atlan.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "sourceTagGuid", + "description": "Unique identifier (GUID) of the source tag, in Atlan.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "sourceTagConnectorName", + "description": "Connector that is the source of the tag.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "sourceTagValue", + "description": "Value of the tag attachment, from the source.", + "typeName": "array", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "isIndexable": false + }, + { + "name": "isSourceTagSynced", + "description": "Whether the tag attachment has been synced at the source (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "sourceTagSyncTimestamp", + "description": "Time (epoch) when the tag attachment was synced at the source, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "indexTypeESFields": { + "date": { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "sourceTagSyncError", + "description": "Error message if the tag attachment sync at the source failed.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + }, + { + "name": "sourceTagType", + "description": "Specifies the source tag type.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false + } + ] + } + ], + "entityDefs": + [ + + + + + { + "name": "Referenceable", + "description": "Base class for everything in Atlan that can be referenced by qualifiedName.", + "superTypes": + [], + "serviceType": "atlas_core", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "qualifiedName", + "description": "Unique name for this asset. This is typically a concatenation of the asset's name onto its parent's qualifiedName. This must be unique across all assets of the same type.", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": true, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "replicatedFrom", + "description": "Unused. List of servers where this entity is replicated from.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "options": + { + "isSoftReference": "true" + } + }, + { + "name": "replicatedTo", + "description": "Unused. List of servers where this entity is replicated to.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "options": + { + "isSoftReference": "true" + } + } + ] + }, + { + "name": "Asset", + "description": "Base class for all assets.", + "superTypes": + [ + "Referenceable" + ], + "serviceType": "atlas_core", + "typeVersion": "1.4", + "attributeDefs": + [ + { + "name": "name", + "description": "Name of this asset. Fallback for display purposes, if displayName is empty.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": false, + "isUnique": false, + "searchWeight": 10, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + }, + "stemmed": + { + "type": "text", + "analyzer": "atlan_text_stemmer" + } + } + }, + { + "name": "displayName", + "description": "Human-readable name of this asset used for display purposes (in user interface).", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false, + "searchWeight": 10, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword" + } + } + }, + { + "name": "description", + "description": "Description of this asset, for example as crawled from a source. Fallback for display purposes, if userDescription is empty.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "searchWeight": 9, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "userDescription", + "description": "Description of this asset, as provided by a user. If present, this will be used for the description in user interface.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false, + "searchWeight": 9, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "tenantId", + "description": "Name of the Atlan workspace in which this asset exists.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true + }, + { + "name": "certificateStatus", + "description": "Status of this asset's certification.", + "typeName": "certificate_status", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "skipScrubbing": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "certificateUpdatedBy" + ], + "timestamp": + [ + "certificateUpdatedAt" + ] + }, + "indexTypeESConfig": + { + "normalizer": "atlan_normalizer" + }, + "indexTypeESFields": + { + "text": + { + "type": "text" + } + } + }, + { + "name": "certificateStatusMessage", + "description": "Human-readable descriptive message used to provide further detail to certificateStatus.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "certificateUpdatedBy" + ], + "timestamp": + [ + "certificateUpdatedAt" + ] + } + }, + { + "name": "certificateUpdatedBy", + "description": "Name of the user who last updated the certification of this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "certificateUpdatedAt", + "description": "Time (epoch) at which the certification was last updated, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "announcementTitle", + "description": "Brief title for the announcement on this asset. Required when announcementType is specified.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "announcementUpdatedBy" + ], + "timestamp": + [ + "announcementUpdatedAt" + ] + } + }, + { + "name": "announcementMessage", + "description": "Detailed message to include in the announcement on this asset.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "announcementUpdatedBy" + ], + "timestamp": + [ + "announcementUpdatedAt" + ] + } + }, + { + "name": "announcementType", + "description": "Type of announcement on this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "announcementUpdatedBy" + ], + "timestamp": + [ + "announcementUpdatedAt" + ] + } + }, + { + "name": "announcementUpdatedAt", + "description": "Time (epoch) at which the announcement was last updated, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "announcementUpdatedBy", + "description": "Name of the user who last updated the announcement.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "ownerUsers", + "description": "List of users who own this asset.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "ownerGroups", + "description": "List of groups who own this asset.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "adminUsers", + "description": "List of users who administer this asset. (This is only used for certain asset types.)", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "adminGroups", + "description": "List of groups who administer this asset. (This is only used for certain asset types.)", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "viewerUsers", + "description": "List of users who can view assets contained in a collection. (This is only used for certain asset types.)", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "viewerGroups", + "description": "List of groups who can view assets contained in a collection. (This is only used for certain asset types.)", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "connectorName", + "description": "Type of the connector through which this asset is accessible.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "connectionName", + "description": "Simple name of the connection through which this asset is accessible.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text" + } + } + }, + { + "name": "connectionQualifiedName", + "description": "Unique name of the connection through which this asset is accessible.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "__hasLineage", + "description": "Whether this asset has lineage (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": false, + "skipScrubbing": true, + "defaultValue": false + }, + { + "name": "isDiscoverable", + "description": "Whether this asset is discoverable through the UI (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isEditable", + "description": "Whether this asset can be edited in the UI (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "subType", + "description": "Subtype of this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "viewScore", + "description": "View score for this asset.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "defaultValue": 1.17549435E-38, + "includeInNotification": false, + "indexTypeESFields": + { + "rank_feature": + { + "type": "rank_feature" + } + } + }, + { + "name": "popularityScore", + "description": "Popularity score for this asset.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "defaultValue": 1.17549435E-38, + "includeInNotification": true, + "indexTypeESFields": + { + "rank_feature": + { + "type": "rank_feature" + } + } + }, + { + "name": "sourceOwners", + "description": "List of owners of this asset, in the source system.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceCreatedBy", + "description": "Name of the user who created this asset, in the source system.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceCreatedAt", + "description": "Time (epoch) at which this asset was created in the source system, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "sourceUpdatedAt", + "description": "Time (epoch) at which this asset was last updated in the source system, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "sourceUpdatedBy", + "description": "Name of the user who last updated this asset, in the source system.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceURL", + "description": "URL to the resource within the source application, used to create a button to view this asset in the source application.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceEmbedURL", + "description": "URL to create an embed for a resource (for example, an image of a dashboard) within Atlan.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "lastSyncWorkflowName", + "description": "Name of the crawler that last synchronized this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "lastSyncRunAt", + "description": "Time (epoch) at which this asset was last crawled, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "lastSyncRun", + "description": "Name of the last run of the crawler that last synchronized this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "adminRoles", + "description": "List of roles who administer this asset. (This is only used for Connection assets.)", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceReadCount", + "description": "Total count of all read operations at source.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadUserCount", + "description": "Total number of unique users that read data from asset.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceLastReadAt", + "description": "Timestamp of most recent read operation.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "lastRowChangedAt", + "description": "Time (epoch) of the last operation that inserted, updated, or deleted rows, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + }, + { + "name": "sourceTotalCost", + "description": "Total cost of all operations at source.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceCostUnit", + "description": "The unit of measure for sourceTotalCost.", + "typeName": "SourceCostUnitType", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "sourceReadQueryCost", + "description": "Total cost of read queries at source.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadRecentUserList", + "description": "List of usernames of the most recent users who read this asset.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadRecentUserRecordList", + "description": "List of usernames with extra insights for the most recent users who read this asset.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadTopUserList", + "description": "List of usernames of the users who read this asset the most.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadTopUserRecordList", + "description": "List of usernames with extra insights for the users who read this asset the most.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadPopularQueryRecordList", + "description": "List of the most popular queries that accessed this asset.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadExpensiveQueryRecordList", + "description": "List of the most expensive queries that accessed this asset.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceReadSlowQueryRecordList", + "description": "List of the slowest queries that accessed this asset.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceQueryComputeCostList", + "description": "List of most expensive warehouse names.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "sourceQueryComputeCostRecordList", + "description": "List of most expensive warehouses with extra insights.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "dbtQualifiedName", + "description": "Unique name of this asset in dbt.", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "assetDbtWorkflowLastUpdated", + "description": "Name of the DBT workflow in Atlan that last updated the asset.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtAlias", + "description": "Alias of this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtMeta", + "description": "Metadata for this asset in dbt, specifically everything under the 'meta' key in the dbt object.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "assetDbtUniqueId", + "description": "Unique identifier of this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtAccountName", + "description": "Name of the account in which this asset exists in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtProjectName", + "description": "Name of the project in which this asset exists in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtPackageName", + "description": "Name of the package in which this asset exists in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtJobName", + "description": "Name of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtJobSchedule", + "description": "Schedule of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "assetDbtJobStatus", + "description": "Status of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtTestStatus", + "description": "All associated dbt test statuses.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobScheduleCronHumanized", + "description": "Human-readable cron schedule of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + } + }, + { + "name": "assetDbtJobLastRun", + "description": "Time (epoch) at which the job that materialized this asset in dbt last ran, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunUrl", + "description": "URL of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunCreatedAt", + "description": "Time (epoch) at which the job that materialized this asset in dbt was last created, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunUpdatedAt", + "description": "Time (epoch) at which the job that materialized this asset in dbt was last updated, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunDequedAt", + "description": "Time (epoch) at which the job that materialized this asset in dbt was dequeued, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunStartedAt", + "description": "Time (epoch) at which the job that materialized this asset in dbt was started running, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunTotalDuration", + "description": "Total duration of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunTotalDurationHumanized", + "description": "Human-readable total duration of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunQueuedDuration", + "description": "Total duration the job that materialized this asset in dbt spent being queued.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunQueuedDurationHumanized", + "description": "Human-readable total duration of the last run of the job that materialized this asset in dbt spend being queued.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunRunDuration", + "description": "Run duration of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunRunDurationHumanized", + "description": "Human-readable run duration of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunGitBranch", + "description": "Branch in git from which the last run of the job that materialized this asset in dbt ran.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "analyzer": "atlan_text_analyzer", + "type": "text" + } + } + }, + { + "name": "assetDbtJobLastRunGitSha", + "description": "SHA hash in git for the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunStatusMessage", + "description": "Status message of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtJobLastRunOwnerThreadId", + "description": "Thread ID of the owner of the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunExecutedByThreadId", + "description": "Thread ID of the user who executed the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunArtifactsSaved", + "description": "Whether artifacts were saved from the last run of the job that materialized this asset in dbt (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunArtifactS3Path", + "description": "Path in S3 to the artifacts saved from the last run of the job that materialized this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtJobLastRunHasDocsGenerated", + "description": "Whether docs were generated from the last run of the job that materialized this asset in dbt (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunHasSourcesGenerated", + "description": "Whether sources were generated from the last run of the job that materialized this asset in dbt (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobLastRunNotificationsSent", + "description": "Whether notifications were sent from the last run of the job that materialized this asset in dbt (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobNextRun", + "description": "Time (epoch) when the next run of the job that materializes this asset in dbt is scheduled.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "assetDbtJobNextRunHumanized", + "description": "Human-readable time when the next run of the job that materializes this asset in dbt is scheduled.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtEnvironmentName", + "description": "Name of the environment in which this asset is materialized in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "assetDbtEnvironmentDbtVersion", + "description": "Version of the environment in which this asset is materialized in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtTags", + "description": "List of tags attached to this asset in dbt.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "analyzer": "atlan_text_analyzer", + "type": "text" + } + } + }, + { + "name": "assetDbtSemanticLayerProxyUrl", + "description": "URL of the semantic layer proxy for this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetDbtSourceFreshnessCriteria", + "description": "Freshness criteria for the source of this asset in dbt.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "sampleDataUrl", + "description": "URL for sample data for this asset.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "assetTags", + "description": "List of tags attached to this asset.", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "analyzer": "atlan_text_analyzer", + "type": "text" + } + } + }, + { + "name": "assetMcIncidentNames", + "description": "List of Monte Carlo incident names attached to this asset.", + "typeName": "array", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword" + } + } + }, + { + "name": "assetMcIncidentQualifiedNames", + "description": "List of unique Monte Carlo incident names attached to this asset.", + "typeName": "array", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "assetMcAlertQualifiedNames", + "description": "List of unique Monte Carlo alert names attached to this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "assetMcMonitorNames", + "description": "List of Monte Carlo monitor names attached to this asset.", + "typeName": "array", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword" + } + } + }, + { + "name": "assetMcMonitorQualifiedNames", + "description": "List of unique Monte Carlo monitor names attached to this asset.", + "typeName": "array", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "assetMcMonitorStatuses", + "description": "Statuses of all associated Monte Carlo monitors.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcMonitorTypes", + "description": "Types of all associated Monte Carlo monitors.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcMonitorScheduleTypes", + "description": "Schedules of all associated Monte Carlo monitors.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIncidentTypes", + "description": "List of Monte Carlo incident types associated with this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIncidentSubTypes", + "description": "List of Monte Carlo incident sub-types associated with this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIncidentSeverities", + "description": "List of Monte Carlo incident severities associated with this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIncidentPriorities", + "description": "List of Monte Carlo incident priorities associated with this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIncidentStates", + "description": "List of Monte Carlo incident states associated with this asset.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetMcIsMonitored", + "description": "Tracks whether this asset is monitored by MC or not", + "typeName": "boolean", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetMcLastSyncRunAt", + "description": "Time (epoch) at which this asset was last synced from Monte Carlo.", + "typeName": "date", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "starredBy", + "description": "Users who have starred this asset.", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "starredDetailsList", + "description": "List of usernames with extra information of the users who have starred an asset.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "starredCount", + "description": "Number of users who have starred this asset.", + "typeName": "int", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetAnomaloDQStatus", + "description": "Status of data quality from Anomalo.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetAnomaloCheckCount", + "description": "Total number of checks present in Anomalo for this asset.", + "typeName": "long", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetAnomaloFailedCheckCount", + "description": "Total number of checks failed in Anomalo for this asset.", + "typeName": "long", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetAnomaloCheckStatuses", + "description": "Stringified JSON object containing status of all Anomalo checks associated to this asset.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetAnomaloLastCheckRunAt", + "description": "Time (epoch) at which the last check was run via Anomalo.", + "typeName": "date", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetAnomaloAppliedCheckTypes", + "description": "All associated Anomalo check types.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetAnomaloFailedCheckTypes", + "description": "All associated Anomalo failed check types.", + "typeName": "array", + "cardinality": "SET", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetAnomaloSourceUrl", + "description": "URL of the source in Anomalo.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetSodaDQStatus", + "description": "Status of data quality from Soda.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetSodaCheckCount", + "description": "Number of checks done via Soda.", + "typeName": "long", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetSodaLastSyncRunAt", + "description": "", + "typeName": "date", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetSodaLastScanAt", + "description": "", + "typeName": "date", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetSodaCheckStatuses", + "description": "All associated Soda check statuses.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetSodaSourceURL", + "description": "", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "assetIcon", + "description": "Name of the icon to use for this asset. (Only applies to glossaries, currently.)", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "isPartial", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "defaultValue": false, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "isAIGenerated", + "description": "", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "defaultValue": false, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "assetCoverImage", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "assetThemeHex", + "description": "Color (in hexadecimal RGB) to use to represent this asset.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "lexicographicalSortOrder", + "description": "Custom order for sorting purpose, managed by client", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "indexType": "STRING", + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "hasContract", + "description": "Whether this asset has contract (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "defaultValue": false + }, + { + "name": "assetRedirectGUIDs", + "description": "Array of asset ids that equivalent to this asset.", + "typeName": "array", + "cardinality": "SET", + "indexType": "STRING", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "assetPolicyGUIDs", + "description": "Array of policy ids governing this asset", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "assetPoliciesCount", + "description": "Count of policies inside the asset", + "typeName": "long", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "domainGUIDs", + "description": "Array of domain guids linked to this asset", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "nonCompliantAssetPolicyGUIDs", + "description": "Array of policy ids non-compliant to this asset", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "productGUIDs", + "description": "Array of product guids linked to this asset", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "outputProductGUIDs", + "description": "Array of product guids which have this asset as outputPort", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "applicationQualifiedName", + "description": "Qualified name of the Application that contains this asset.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "applicationFieldQualifiedName", + "description": "Qualified name of the ApplicationField that contains this asset.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + } + ] + }, + { + "name": "AtlasGlossary", + "description": "Instance of a glossary in Atlan.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.2", + "attributeDefs": + [ + { + "name": "shortDescription", + "description": "Unused. A short definition of the glossary. See 'description' and 'userDescription' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "longDescription", + "description": "Unused. A longer description of the glossary. See 'readme' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "skipScrubbing": true, + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "language", + "description": "Unused. Language of the glossary's contents.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "usage", + "description": "Unused. Inteded usage for the glossary.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "additionalAttributes", + "description": "Unused. Arbitrary set of additional attributes associated with this glossary.", + "typeName": "map", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "glossaryType", + "typeName": "AtlasGlossaryType", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "AtlasGlossaryCategory", + "description": "Instance of a category in Atlan, an organizational construct for glossary terms.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.2", + "attributeDefs": + [ + { + "name": "shortDescription", + "description": "Unused. Brief summary of the category. See 'description' and 'userDescription' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "longDescription", + "description": "Unused. Detailed description of the category. See 'readme' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "additionalAttributes", + "description": "Unused. Arbitrary set of additional attributes associated with the category.", + "typeName": "map", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "categoryType", + "typeName": "AtlasGlossaryCategoryType", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "AtlasGlossaryTerm", + "description": "Instance of a term in Atlan. Terms define concepts in natural language that can be associated with other assets to provide meaning.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.2", + "attributeDefs": + [ + { + "name": "shortDescription", + "description": "Unused. Brief summary of the term. See 'description' and 'userDescription' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "longDescription", + "description": "Unused. Detailed definition of the term. See 'readme' instead.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "examples", + "description": "Unused. Exmaples of the term.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "abbreviation", + "description": "Unused. Abbreviation of the term.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "usage", + "description": "Unused. Intended usage for the term.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "additionalAttributes", + "description": "Unused. Arbitrary set of additional attributes for the terrm.", + "typeName": "map", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false + }, + { + "name": "termType", + "typeName": "AtlasGlossaryTermType", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "Catalog", + "description": "Base class for catalog assets. Catalog assets include any asset that can participate in lineage.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "EventStore", + "description": "Base class for event store assets.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "Insight", + "description": "Base class for Insights assets in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [] + }, + { + "name": "DataMesh", + "description": "Base class for data mesh assets.", + "superTypes": + [ + "Catalog" + ], + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "parentDomainQualifiedName", + "description": "Unique name of the parent domain in which this asset exists.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "superDomainQualifiedName", + "description": "Unique name of the top-level domain in which this asset exists.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + } + ] + }, + { + "name": "Model", + "category": "ENTITY", + "description": "Assets used to model data and information.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "modelName", + "description": "Simple name of the model in which this asset exists, or empty if it is itself a data model.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "modelQualifiedName", + "description": "Unique name of the model in which this asset exists, or empty if it is itself a data model.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "modelDomain", + "description": "Model domain in which this asset exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "modelNamespace", + "description": "Model namespace in which this asset exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "modelVersionName", + "description": "Simple name of the version in which this asset exists, or empty if it is itself a data model version.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "modelVersionAgnosticQualifiedName", + "description": "Unique name of the parent in which this asset exists, irrespective of the version (always implies the latest version).", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "modelVersionQualifiedName", + "description": "Unique name of the version in which this asset exists, or empty if it is itself a data model version.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "modelEntityName", + "description": "Simple name of the entity in which this asset exists, or empty if it is itself a data model entity.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "modelEntityQualifiedName", + "description": "Unique name of the entity in which this asset exists, or empty if it is itself a data model entity.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "modelType", + "description": "Type of the model asset (conceptual, logical, physical).", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true, + "indexType": "STRING" + }, + { + "name": "modelSystemDate", + "description": "System date for the asset.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "modelBusinessDate", + "description": "Business date for the asset.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "modelExpiredAtSystemDate", + "description": "System expiration date for the asset.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + }, + { + "name": "modelExpiredAtBusinessDate", + "description": "Business expiration date for the asset.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": true + } + ], + "superTypes": + [ + "Catalog" + ] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "Resource", + "description": "Base class for resources.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "link", + "description": "URL to the resource.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isGlobal", + "description": "Whether the resource is global (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "reference", + "description": "Reference to the resource.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "resourceMetadata", + "description": "Metadata of the resource.", + "typeName": "map", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "SQL", + "description": "Base class for SQL assets.", + "typeVersion": "1.1", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "queryCount", + "description": "Number of times this asset has been queried.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryUserCount", + "description": "Number of unique users who have queried this asset.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryUserMap", + "description": "Map of unique users who have queried this asset to the number of times they have queried it.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryCountUpdatedAt", + "description": "Time (epoch) at which the query count was last updated, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": false + }, + { + "name": "databaseName", + "description": "Simple name of the database in which this SQL asset exists, or empty if it does not exist within a database.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "databaseQualifiedName", + "description": "Unique name of the database in which this SQL asset exists, or empty if it does not exist within a database.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "schemaName", + "description": "Simple name of the schema in which this SQL asset exists, or empty if it does not exist within a schema.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "schemaQualifiedName", + "description": "Unique name of the schema in which this SQL asset exists, or empty if it does not exist within a schema.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "tableName", + "description": "Simple name of the table in which this SQL asset exists, or empty if it does not exist within a table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "tableQualifiedName", + "description": "Unique name of the table in which this SQL asset exists, or empty if it does not exist within a table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "viewName", + "description": "Simple name of the view in which this SQL asset exists, or empty if it does not exist within a view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "viewQualifiedName", + "description": "Unique name of the view in which this SQL asset exists, or empty if it does not exist within a view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "calculationViewName", + "description": "Simple name of the calculation view in which this SQL asset exists, or empty if it does not exist within a calculation view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "calculationViewQualifiedName", + "description": "Unique name of the calculation view in which this SQL asset exists, or empty if it does not exist within a calculation view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "isProfiled", + "description": "Whether this asset has been profiled (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "valuesMinCount": 0, + "valuesMaxCount": 1, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "lastProfiledAt", + "description": "Time (epoch) at which this asset was last profiled, in milliseconds.", + "typeName": "date", + "isOptional": true, + "valuesMinCount": 0, + "valuesMaxCount": 1, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESFields": + { + "date": + { + "type": "date", + "format": "epoch_millis" + } + } + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "CalculationView", + "description": "Instance of a calculation view in Atlan.", + "typeVersion": "1.1", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "columnCount", + "description": "Number of columns in this calculation view.", + "typeName": "long", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "calculationViewVersionId", + "description": "The version ID of this calculation view.", + "typeName": "long", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "calculationViewActivatedBy", + "description": "The owner who activated the calculation view", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + }, + { + "name": "calculationViewActivatedAt", + "description": "Time at which this calculation view was activated at", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isIndexable": false, + "isUnique": false, + "includeInNotification": true + }, + { + "name": "calculationViewPackageId", + "description": "The full package id path to which a calculation view belongs/resides in the repository.", + "typeName": "string", + "cardinality": "SINGLE", + "isOptional": true, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexType": "STRING" + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Column", + "description": "Instance of a column in Atlan.", + "typeVersion": "1.4", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "dataType", + "description": "Data type of values in this column.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "indexType": "STRING", + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESConfig": + { + "normalizer": "atlan_normalizer" + }, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "subDataType", + "description": "Sub-data type of this column.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "columnCompression", + "description": "Compression type of this column.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnEncoding", + "description": "Encoding type of this column.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "rawDataTypeDefinition", + "description": "", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "order", + "description": "Order (position) in which this column appears in the table (starting at 1).", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "nestedColumnOrder", + "description": "Order (position) in which this column appears in the nested Column (nest level starts at 1).", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "nestedColumnCount", + "description": "Number of columns nested within this (STRUCT or NESTED) column.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnHierarchy", + "description": "List of top-level upstream nested columns.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "isPartition", + "description": "Whether this column is a partition column (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "partitionOrder", + "description": "Order (position) of this partition column in the table.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isClustered", + "description": "Whether this column is a clustered column (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isPrimary", + "description": "When true, this column is the primary key for the table.", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isForeign", + "description": "When true, this column is a foreign key to another table. NOTE: this must be true when using the foreignKeyTo relationship to specify columns that refer to this column as a foreign key.", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isIndexed", + "description": "When true, this column is indexed in the database.", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isSort", + "description": "Whether this column is a sort column (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isDist", + "description": "Whether this column is a distribution column (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isPinned", + "description": "Whether this column is pinned (true) or not (false).", + "typeName": "boolean", + "defaultValue": false, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true, + "autoUpdateAttributes": + { + "user": + [ + "pinnedBy" + ], + "timestamp": + [ + "pinnedAt" + ] + } + }, + { + "name": "pinnedBy", + "description": "User who pinned this column.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "indexType": "STRING", + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "pinnedAt", + "description": "Time (epoch) at which this column was pinned, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "precision", + "typeName": "int", + "description": "Total number of digits allowed, when the dataType is numeric.", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "defaultValue", + "description": "Default value for this column.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "isNullable", + "description": "When true, the values in this column can be null.", + "typeName": "boolean", + "defaultValue": true, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "numericScale", + "description": "Number of digits allowed to the right of the decimal point.", + "typeName": "float", + "cardinality": "SINGLE", + "isUnique": false, + "isOptional": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "maxLength", + "description": "Maximum length of a value in this column.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "validations", + "description": "Validations for this column.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "parentColumnQualifiedName", + "description": "Unique name of the column this column is nested within, for STRUCT and NESTED columns.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "parentColumnName", + "description": "Simple name of the column this column is nested within, for STRUCT and NESTED columns.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword", + "normalizer": "atlan_normalizer" + } + } + }, + { + "name": "columnDistinctValuesCount", + "description": "Number of rows that contain distinct values.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnDistinctValuesCountLong", + "description": "Number of rows that contain distinct values.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnHistogram", + "description": "List of values in a histogram that represents the contents of this column.", + "typeName": "Histogram", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMax", + "description": "Greatest value in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMin", + "description": "Least value in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMean", + "description": "Arithmetic mean of the values in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnSum", + "description": "Calculated sum of the values in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMedian", + "description": "Calculated median of the values in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnStandardDeviation", + "description": "Calculated standard deviation of the values in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnUniqueValuesCount", + "description": "Number of rows in which a value in this column appears only once.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnUniqueValuesCountLong", + "description": "Number of rows in which a value in this column appears only once.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnAverage", + "description": "Average value in this column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnAverageLength", + "description": "Average length of values in a string column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnDuplicateValuesCount", + "description": "Number of rows that contain duplicate values.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnDuplicateValuesCountLong", + "description": "Number of rows that contain duplicate values.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMaximumStringLength", + "description": "Length of the longest value in a string column.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMaxs", + "description": "List of the greatest values in a column.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMinimumStringLength", + "description": "Length of the shortest value in a string column.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMins", + "description": "List of the least values in a column.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMissingValuesCount", + "description": "Number of rows in a column that do not contain content.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMissingValuesCountLong", + "description": "Number of rows in a column that do not contain content.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMissingValuesPercentage", + "description": "Percentage of rows in a column that do not contain content.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnUniquenessPercentage", + "description": "Ratio indicating how unique data in this column is: 0 indicates that all values are the same, 100 indicates that all values in this column are unique.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnVariance", + "description": "Calculated variance of the values in a numeric column.", + "typeName": "float", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnTopValues", + "description": "List of top values in this column.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnDepthLevel", + "typeName": "int", + "description": "Level of nesting of this column, used for STRUCT and NESTED columns.", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "nosqlCollectionName", + "description": "Simple name of the cosmos/mongo collection in which this SQL asset (column) exists, or empty if it does not exist within a cosmos/mongo collection.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "atlan_text_analyzer" + }, + "indexTypeESFields": + { + "keyword": + { + "type": "keyword" + } + } + }, + { + "name": "nosqlCollectionQualifiedName", + "description": "Unique name of the cosmos/mongo collection in which this SQL asset (column) exists, or empty if it does not exist within a cosmos/mongo collection.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnIsMeasure", + "description": "When true, this column is of type measure/calculated.", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "columnMeasureType", + "description": "The type of measure/calculated column this is, eg: base, calcaluted, derived.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Database", + "description": "Instance of a (relational) database in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "schemaCount", + "description": "Number of schemas in this database.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Function", + "description": "Instance of a function in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "functionDefinition", + "description": "Code or set of statements that determine the output of the function.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionReturnType", + "description": "Data type of the value returned by the function.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "indexType": "STRING", + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionArguments", + "description": "Arguments that are passed in to the function.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "functionLanguage", + "description": "Programming language in which the function is written.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "indexType": "STRING", + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionType", + "description": "Type of function.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "indexType": "STRING", + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionIsExternal", + "description": "Whether the function is stored or executed externally (true) or internally (false).", + "typeName": "boolean", + "defaultValue": false, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionIsDMF", + "description": "Whether the function is a data metric function.", + "typeName": "boolean", + "defaultValue": false, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionIsSecure", + "description": "Whether sensitive information of the function is omitted for unauthorized users (true) or not (false).", + "typeName": "boolean", + "defaultValue": false, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "functionIsMemoizable", + "description": "Whether the function must re-compute if there are no underlying changes in the values (false) or not (true).", + "typeName": "boolean", + "defaultValue": false, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "MaterialisedView", + "description": "Instance of a materialized view in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "refreshMode", + "description": "Refresh mode for this materialized view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "indexType": "STRING", + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "refreshMethod", + "description": "Refresh method for this materialized view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "staleness", + "description": "Staleness of this materialized view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "staleSinceDate", + "description": "Time (epoch) from which this materialized view is stale, in milliseconds.", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "columnCount", + "description": "Number of columns in this materialized view.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "rowCount", + "description": "Number of rows in this materialized view.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sizeBytes", + "description": "Size of this materialized view, in bytes.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isQueryPreview", + "description": "Whether it's possible to run a preview query on this materialized view (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryPreviewConfig", + "description": "Configuration for the query preview of this materialized view.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "alias", + "description": "Alias for this materialized view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isTemporary", + "description": "Whether this materialized view is temporary (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "definition", + "description": "SQL definition of this materialized view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Procedure", + "description": "Instance of a stored procedure (routine) in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "definition", + "description": "SQL definition of the procedure.", + "typeName": "string", + "isOptional": false, + "cardinality": "SINGLE", + "valuesMinCount": 1, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "name": "Query", + "superTypes": + [ + "SQL" + ], + "description": "Instance of a query in Atlan.", + "typeVersion": "1.2", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "rawQuery", + "description": "Deprecated. See 'longRawQuery' instead.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "longRawQuery", + "description": "Raw SQL query string.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "rawQueryText", + "description": "", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "indexTypeESConfig": + { + "analyzer": "truncate_analyzer" + } + }, + { + "name": "defaultSchemaQualifiedName", + "description": "Unique name of the default schema to use for this query.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "defaultDatabaseQualifiedName", + "description": "Unique name of the default database to use for this query.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "variablesSchemaBase64", + "description": "Base64-encoded string of the variables to use in this query.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "isPrivate", + "description": "Whether this query is private (true) or shared (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isSqlSnippet", + "description": "Whether this query is a SQL snippet (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "parentQualifiedName", + "description": "Unique name of the parent collection or folder in which this query exists.", + "typeName": "string", + "indexType": "STRING", + "isOptional": false, + "cardinality": "SINGLE", + "valuesMinCount": 1, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "collectionQualifiedName", + "description": "Unique name of the collection in which this query exists.", + "typeName": "string", + "indexType": "STRING", + "isOptional": false, + "cardinality": "SINGLE", + "valuesMinCount": 1, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "isVisualQuery", + "description": "Whether this query is a visual query (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "visualBuilderSchemaBase64", + "description": "Base64-encoded string for the visual query builder.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Schema", + "description": "Instance of a database schema in Atlan.", + "typeVersion": "1.1", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "tableCount", + "description": "Number of tables in this schema.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "schemaExternalLocation", + "description": "External location of this schema, for example: an S3 object location.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "viewsCount", + "description": "Number of views in this schema.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "linkedSchemaQualifiedName", + "description": "Unique name of the Linked Schema on which this Schema is dependent. This concept is mostly applicable for linked datasets/datasource in Google BigQuery via Analytics Hub Listing", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "Table", + "description": "Instance of a database table in Atlan.", + "typeVersion": "1.1", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "columnCount", + "description": "Number of columns in this table.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "rowCount", + "description": "Number of rows in this table.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sizeBytes", + "description": "Size of this table, in bytes.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "tableObjectCount", + "description": "Number of objects in this table.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "alias", + "description": "Alias for this table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isTemporary", + "description": "Whether this table is temporary (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isQueryPreview", + "description": "Whether preview queries are allowed for this table (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryPreviewConfig", + "description": "Configuration for preview queries.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocation", + "description": "External location of this table, for example: an S3 object location.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocationRegion", + "description": "Region of the external location of this table, for example: S3 region.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocationFormat", + "description": "Format of the external location of this table, for example: JSON, CSV, PARQUET, etc.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isPartitioned", + "description": "Whether this table is partitioned (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "partitionStrategy", + "description": "Partition strategy for this table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "partitionCount", + "description": "Number of partitions in this table.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "tableDefinition", + "description": "Definition of the table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "partitionList", + "description": "List of partitions in this table.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isSharded", + "description": "Whether this table is a sharded table (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "tableType", + "description": "Type of the table.", + "typeName": "table_type", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "icebergCatalogName", + "description": "Iceberg table catalog name (can be any user defined name)", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "icebergTableType", + "description": "Iceberg table type (managed vs unmanaged)", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "icebergCatalogSource", + "description": "Iceberg table catalog type (glue, polaris, snowflake)", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "icebergCatalogTableName", + "description": "Catalog table name (actual table name on the catalog side).", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "tableImpalaParameters", + "description": "Extra attributes for Impala", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": false + }, + { + "name": "icebergCatalogTableNamespace", + "description": "Catalog table namespace (actual database name on the catalog side).", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "tableExternalVolumeName", + "description": "External volume name for the table.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "icebergTableBaseLocation", + "description": "Iceberg table base location inside the external volume.", + "typeName": "string", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "tableRetentionTime", + "description": "Data retention time in days.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "name": "TablePartition", + "superTypes": + [ + "SQL" + ], + "description": "Instance of a database table partition in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "constraint", + "description": "Constraint that defines this table partition.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "columnCount", + "description": "Number of columns in this partition.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "rowCount", + "description": "Number of rows in this partition.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sizeBytes", + "description": "Size of this partition, in bytes.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "alias", + "description": "Alias for this partition.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isTemporary", + "description": "Whether this partition is temporary (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isQueryPreview", + "description": "Whether preview queries for this partition are allowed (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryPreviewConfig", + "description": "Configuration for the preview queries.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocation", + "description": "External location of this partition, for example: an S3 object location.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocationRegion", + "description": "Region of the external location of this partition, for example: S3 region.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "externalLocationFormat", + "description": "Format of the external location of this partition, for example: JSON, CSV, PARQUET, etc.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isPartitioned", + "description": "Whether this partition is further partitioned (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "partitionStrategy", + "description": "Partition strategy of this partition.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": true + }, + { + "name": "partitionCount", + "description": "Number of sub-partitions of this partition.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "partitionList", + "description": "List of sub-partitions in this partition.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "SQL" + ], + "name": "View", + "description": "Instance of a database view in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "columnCount", + "description": "Number of columns in this view.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "rowCount", + "description": "Number of rows in this view.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sizeBytes", + "description": "Size of this view, in bytes.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isQueryPreview", + "description": "Whether preview queries are allowed on this view (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryPreviewConfig", + "description": "Configuration for preview queries on this view.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "alias", + "description": "Alias for this view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isTemporary", + "description": "Whether this view is temporary (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "definition", + "description": "SQL definition of this view.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "SaaS", + "description": "Base class for SaaS application assets.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [] + }, + { + "superTypes": + [ + "Catalog" + ], + "name": "SchemaRegistry", + "description": "Instance of a schema registry in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "schemaRegistrySchemaType", + "typeName": "SchemaRegistrySchemaType", + "description": "Type of language or specification used to define the schema, for example: JSON, Protobuf, etc.", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "schemaRegistrySchemaId", + "typeName": "string", + "description": "Unique identifier for schema definition set by the schema registry.", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + } + ] + }, + { + "name": "Tag", + "description": "Base class for all (source-specific) tag assets.", + "superTypes": + [ + "Catalog" + ], + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "tagId", + "description": "Unique identifier of the tag in the source system.", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "tagAttributes", + "description": "Attributes associated with the tag in the source system.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "tagAllowedValues", + "description": "Allowed values for the tag in the source system. These are denormalized from tagAttributes for ease of querying.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false, + "indexType": "STRING", + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "mappedClassificationName", + "description": "Name of the classification in Atlan that is mapped to this tag.", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "SourceTag", + "category": "ENTITY", + "description": "Instance of a source system-imported tag in Atlan.", + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "tagCustomConfiguration", + "description": "Specifies custom configuration elements based on the system the tag is being imported from.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "includeInNotification": true, + "skipScrubbing": false, + "indexType": "STRING" + } + ], + "superTypes": + [ + "Tag" + ] + }, + { + "name": "TagAttachment", + "description": "Represents Source tag association asset", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "tagQualifiedName", + "description": "Represents associated source tag's qualified name", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + }, + { + "name": "tagAttachmentStringValue", + "typeName": "string", + "description": "Represents associated tag value", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": true, + "indexTypeESFields": + { + "text": + { + "type": "text", + "analyzer": "atlan_text_analyzer" + } + } + } + ] + }, + { + "name": "Cloud", + "description": "Base class for cloud assets.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": + [] + }, + { + "superTypes": + [ + "Asset" + ], + "name": "Connection", + "description": "Instance of a connection to a data source in Atlan.", + "typeVersion": "1.2", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "category", + "description": "Type of connection, for example WAREHOUSE, RDBMS, etc.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "subCategory", + "description": "Subcategory of this connection.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "skipScrubbing": true, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "host", + "description": "Host name of this connection's source.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "port", + "description": "Port number to this connection's source.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "allowQuery", + "description": "Whether using this connection to run queries on the source is allowed (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "allowQueryPreview", + "description": "Whether using this connection to run preview queries on the source is allowed (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryPreviewConfig", + "description": "Configuration for preview queries.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryConfig", + "description": "Query config for this connection.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "credentialStrategy", + "description": "Credential strategy to use for this connection for queries.", + "typeName": "string", + "defaultValue": "default", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "previewCredentialStrategy", + "description": "Credential strategy to use for this connection for preview queries.", + "typeName": "string", + "indexType": "STRING", + "defaultValue": "default", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "policyStrategy", + "description": "Policy strategy is a configuration that determines whether the Atlan policy will be applied to the results of insight queries and whether the query will be rewritten, applicable for stream api call made from insight screen", + "typeName": "string", + "indexType": "STRING", + "defaultValue": "default", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "policyStrategyForSamplePreview", + "description": "Policy strategy is a configuration that determines whether the Atlan policy will be applied to the results of insight queries and whether the query will be rewritten. policyStrategyForSamplePreview config is applicable for sample preview call from assets screen", + "typeName": "string", + "indexType": "STRING", + "defaultValue": "default", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "queryUsernameStrategy", + "description": "Username strategy to use for this connection for queries.", + "typeName": "query_username_strategy", + "indexType": "STRING", + "defaultValue": "connectionUsername", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "rowLimit", + "description": "Maximum number of rows that can be returned for the source.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "queryTimeout", + "description": "Maximum time a query should be allowed to run before timing out.", + "typeName": "long", + "defaultValue": 10, + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "defaultCredentialGuid", + "description": "Unique identifier (GUID) for the default credentials to use for this connection.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "connectorIcon", + "description": "Unused. Only the value of connectorType impacts icons.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "connectorImage", + "description": "Unused. Only the value of connectorType impacts icons.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sourceLogo", + "description": "Unused. Only the value of connectorType impacts icons.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isSampleDataPreviewEnabled", + "description": "Whether sample data can be previewed for this connection (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "popularityInsightsTimeframe", + "description": "Number of days over which popularity is calculated, for example 30 days.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "hasPopularityInsights", + "description": "Whether this connection has popularity insights (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + }, + { + "name": "connectionDbtEnvironments", + "description": "", + "typeName": "array", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "indexType": "STRING", + "includeInNotification": false + }, + { + "name": "connectionSSOCredentialGuid", + "description": "Unique identifier (GUID) for the SSO credentials to use for this connection.", + "typeName": "string", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "useObjectStorage", + "description": "Whether to upload to S3, GCP, or another storage location (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "objectStorageUploadThreshold", + "description": "Number of rows after which results should be uploaded to storage.", + "typeName": "long", + "isOptional": true, + "cardinality": "SINGLE", + "defaultValue": 100000, + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "vectorEmbeddingsEnabled", + "description": "", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "vectorEmbeddingsUpdatedAt", + "description": "", + "typeName": "date", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": false + } + ] + }, + { + "name": "ConnectionProcess", + "description": "Instance of a lineage connection process in Atlan.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "inputs", + "description": "Assets of type connection that are inputs to this connection process.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "outputs", + "description": "Assets of type connection that are outputs to this connection process.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "superTypes": + [ + "Asset" + ], + "name": "Form", + "description": "Instance of a form in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [ + { + "name": "formFields", + "description": "Fields in a form.", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "formOptions", + "description": "Options of the form.", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "name": "Infrastructure", + "description": "deprecated", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.1", + "attributeDefs": + [] + }, + { + "name": "Process", + "description": "Instance of a lineage process in Atlan.", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "inputs", + "description": "Assets that are inputs to this process.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "outputs", + "description": "Assets that are outputs from this process.", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "skipScrubbing": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "code", + "description": "Code that ran within the process.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "sql", + "description": "SQL query that ran to produce the outputs.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "parentConnectionProcessQualifiedName", + "description": "", + "typeName": "array", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "indexType": "STRING", + "includeInNotification": false + }, + { + "name": "ast", + "description": "Parsed AST of the code or SQL statements that describe the logic of this process.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": false, + "includeInNotification": true + }, + { + "name": "additionalEtlContext", + "description": "Additional Context of the ETL pipeline/notebook which creates the process.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "aiDatasetType", + "description": "Dataset type for AI Model - dataset process.", + "typeName": "AIDatasetType", + "isOptional": true, + "indexType": "STRING", + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": false, + "includeInNotification": true + } + ] + }, + { + "superTypes": + [ + "Process" + ], + "name": "BIProcess", + "description": "Instance of business intelligence lineage in Atlan. These are used to short-circuit lineage from table-like assets directly to dashboard-like assets.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [] + }, + { + "superTypes": + [ + "Process" + ], + "name": "ColumnProcess", + "description": "Instance of a column-level lineage process in Atlan. Inputs and outputs of these processes should be columns.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": + [] + }, + { + "name": "ProcessExecution", + "description": "", + "superTypes": + [ + "Asset" + ], + "serviceType": "atlas_core", + "typeVersion": "1.0", + "attributeDefs": + [] + }, + { + "name": "AuthService", + "superTypes": [ + "Asset" + ], + "description": "Model to store auth service in Atlas", + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": [ + { + "name": "authServiceType", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "tagService", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "authServiceIsEnabled", + "typeName": "boolean", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "defaultValue": true, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "authServiceConfig", + "typeName": "map", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "authServicePolicyLastSync", + "typeName": "long", + "isOptional": true, + "defaultValue": 0, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "name": "AuthPolicy", + "description": "Model to store an accesscontrol policy in Atlas", + "superTypes": [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": + [ + { + "name": "policyType", + "typeName": "AuthPolicyType", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyServiceName", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyCategory", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policySubCategory", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyUsers", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyGroups", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyRoles", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyActions", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyResources", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyResourceCategory", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyPriority", + "typeName": "int", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "defaultValue": 0, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "isPolicyEnabled", + "typeName": "boolean", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "defaultValue": true, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyMaskType", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyValiditySchedule", + "typeName": "array", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "defaultValue": true, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "policyResourceSignature", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "policyDelegateAdmin", + "typeName": "boolean", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "defaultValue": false, + "skipScrubbing": true, + "includeInNotification": true + }, + { + "name": "policyConditions", + "typeName": "array", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "name": "AccessControl", + "superTypes": [ + "Asset" + ], + "description": "Atlan Type representing parent model for Persona, Purpose", + "serviceType": "atlan", + "typeVersion": "1.4", + "attributeDefs": [ + { + "name": "isAccessControlEnabled", + "typeName": "boolean", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "defaultValue": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "denyCustomMetadataGuids", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "denyAssetTabs", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "denyAssetFilters", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "channelLink", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "denyAssetTypes", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "denyNavigationPages", + "typeName": "array", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "defaultNavigation", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "displayPreferences", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "name": "Persona", + "superTypes": [ + "AccessControl" + ], + "description": "Atlan Type representing a Persona model", + "serviceType": "atlan", + "typeVersion": "1.1", + "attributeDefs": [ + { + "name": "personaGroups", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "personaUsers", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + }, + { + "name": "roleId", + "typeName": "string", + "indexType": "STRING", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "includeInNotification": false + } + ] + }, + { + "name": "Purpose", + "superTypes": [ + "AccessControl" + ], + "description": "Atlan Type representing a Purpose model", + "serviceType": "atlan", + "typeVersion": "1.2", + "attributeDefs": [ + { + "name": "purposeClassifications", + "typeName": "array", + "indexType": "STRING", + "cardinality": "SET", + "isIndexable": false, + "isOptional": true, + "isUnique": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "name": "StakeholderTitle", + "description": "Instance of a stakeholder title for Domains in Atlan", + "superTypes": [ + "Asset" + ], + "serviceType": "atlan", + "typeVersion": "1.0", + "attributeDefs": [ + { + "name": "stakeholderTitleDomainQualifiedNames", + "description": "qualified name array representing the Domains for which this StakeholderTitle is applicable", + "typeName": "array", + "indexType": "STRING", + "isOptional": true, + "cardinality": "SET", + "isUnique": false, + "isIndexable": false, + "skipScrubbing": true, + "includeInNotification": false + } + ] + }, + { + "superTypes": [ + "Catalog" + ], + "name": "BI", + "description": "Base class for business intelligence assets.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": [] + }, + { + "superTypes": [ + "BI" + ], + "name": "Tableau", + "description": "Base class for Tableau assets.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": [] + }, + { + "superTypes": [ + "Tableau" + ], + "name": "TableauProject", + "description": "Instance of a Tableau project in Atlan. These are used to organize other assets and for access control, and can be nested.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": [ + { + "name": "siteQualifiedName", + "description": "Unique name of the site in which this project exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "topLevelProjectQualifiedName", + "description": "Unique name of the top-level project in which this project exists, if this is a nested project.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "isTopLevelProject", + "description": "Whether this project is a top-level project (true) or not (false).", + "typeName": "boolean", + "isOptional": true, + "defaultValue": false, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectHierarchy", + "description": "List of top-level projects with their nested child projects.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": [ + "Tableau" + ], + "name": "TableauWorkbook", + "description": "Instance of a Tableau workbook in Atlan. These contain one or more worksheets, datasources or dashboards.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": [ + { + "name": "siteQualifiedName", + "description": "Unique name of the site in which this workbook exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectQualifiedName", + "description": "Unique name of the project in which this workbook exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": { + "keyword": { + "type": "keyword" + } + } + }, + { + "name": "topLevelProjectName", + "description": "Simple name of the top-level project in which this workbook exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "topLevelProjectQualifiedName", + "description": "Unique name of the top-level project in which this workbook exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectHierarchy", + "description": "List of top-level projects with their nested child projects.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": [ + "Tableau" + ], + "name": "TableauCalculatedField", + "description": "Instance of a Tableau calculated field in Atlan. These are created by combining two or more fields using a formula, and can be created at datasource or worksheet level.", + "typeVersion": "2.0", + "serviceType": "atlan", + "attributeDefs": [ + { + "name": "siteQualifiedName", + "description": "Unique name of the site in which this calculated field exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectQualifiedName", + "description": "Unique name of the project in which this calculated field exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": { + "keyword": { + "type": "keyword" + } + } + }, + { + "name": "topLevelProjectQualifiedName", + "description": "Unique name of the top-level project in which this calculated field exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "workbookQualifiedName", + "description": "Unique name of the workbook in which this calculated field exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "datasourceQualifiedName", + "description": "Unique name of the datasource in which this calculated field exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectHierarchy", + "description": "List of top-level projects and their nested projects.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "dataCategory", + "description": "Data category of this field.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "role", + "description": "Role of this field, for example: 'dimension', 'measure', or 'unknown'.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "tableauDataType", + "description": "Data type of the field, from Tableau.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "indexType": "STRING", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": { + "text": { + "type": "text" + } + } + }, + { + "name": "formula", + "description": "Formula for this calculated field.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "upstreamFields", + "description": "List of fields that are upstream to this calculated field.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + } + ] + }, + { + "superTypes": [ + "Tableau" + ], + "name": "TableauWorksheet", + "description": "Instance of a Tableau worksheet in Atlan.", + "typeVersion": "1.0", + "serviceType": "atlan", + "attributeDefs": [ + { + "name": "siteQualifiedName", + "description": "Unique name of the site in which this worksheet exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectQualifiedName", + "description": "Unique name of the project in which this worksheet exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true, + "indexTypeESFields": { + "keyword": { + "type": "keyword" + } + } + }, + { + "name": "topLevelProjectQualifiedName", + "description": "Unique name of the top-level project in which this worksheet exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "projectHierarchy", + "description": "List of top-level projects with their nested child projects.", + "typeName": "array>", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true, + "includeInNotification": true + }, + { + "name": "workbookQualifiedName", + "description": "Unique name of the workbook in which this worksheet exists.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "skipScrubbing": true, + "isIndexable": true, + "includeInNotification": true + } + ] + } + ], + "relationshipDefs": + [ + { + "name": "UserDefRelationship", + "serviceType": "atlan", + "typeVersion": "1.0", + "description": "A generic relationship to hold relationship between any type of asset", + "relationshipLabel": "__Referenceable.userDefRelationshipTo", + "endDef1": + { + "type": "Referenceable", + "name": "userDefRelationshipTo", + "cardinality": "SET" + }, + "endDef2": + { + "type": "Referenceable", + "name": "userDefRelationshipFrom", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "toTypeLabel", + "description": "Name for the relationship when referring from endDef1 asset to endDef2 asset", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "indexType": "STRING" + }, + { + "name": "fromTypeLabel", + "description": "Name for the relationship when referring from endDef2 asset to endDef1 asset", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": false, + "isOptional": true, + "indexType": "STRING" + } + ] + }, + { + "name": "AtlasGlossarySemanticAssignment", + "description": "Assigns meaning to an asset by linking the term that describes the meaning of the asset. The semantic assignment needs to be a controlled relationship when glossary definitions are used to provide classifications for the data assets and hence define how the data is to be governed.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the semantic assignment.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + }, + { + "name": "expression", + "description": "Expression that was used to create the semantic assignment.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + }, + { + "name": "status", + "description": "Status of the semantic assignment, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + }, + { + "name": "confidence", + "description": "Level of confidence (0-100%) in the correctness of the semantic assignment, typically used by discovery engines.", + "typeName": "int", + "isOptional": true, + "cardinality": "SINGLE", + "isUnique": false, + "isIndexable": true + }, + { + "name": "createdBy", + "description": "Username of the user who created the semantic assignment.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + }, + { + "name": "steward", + "description": "User responsible for assessing the semantic assignment and deciding if it should be approved or not.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + }, + { + "name": "source", + "description": "Source of the semantic assignment.", + "typeName": "string", + "isOptional": true, + "cardinality": "SINGLE", + "valuesMinCount": 0, + "valuesMaxCount": 1, + "isUnique": false, + "isIndexable": true + } + ], + "relationshipCategory": "ASSOCIATION", + "propagateTags": "ONE_TO_TWO", + "endDef1": + { + "type": "AtlasGlossaryTerm", + "name": "assignedEntities", + "description": "Assets assigned this term.", + "isContainer": false, + "cardinality": "SET" + }, + "endDef2": + { + "type": "Referenceable", + "name": "meanings", + "description": "Glossary terms that are linked to this asset.", + "isContainer": false, + "cardinality": "SET" + } + }, + { + "name": "AtlasGlossaryTermAnchor", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Links each term to exactly one glossary, its home glossary. If the glossary is deleted, then so are all the terms linked to it.", + "endDef1": + { + "name": "terms", + "description": "Terms contained within this glossary.", + "type": "AtlasGlossary", + "cardinality": "SET", + "isContainer": true + }, + "endDef2": + { + "name": "anchor", + "description": "Glossary in which this term is contained.", + "type": "AtlasGlossaryTerm", + "cardinality": "SINGLE" + }, + "relationshipCategory": "COMPOSITION", + "propagateTags": "NONE" + }, + { + "name": "AtlasGlossaryTermCategorization", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Organizes terms into categories. A term may be linked with many categories and a category may have many terms linked to it. This relationship may connect terms and categories both in the same glossary or in different glossaries.", + "endDef1": + { + "name": "terms", + "description": "Terms organized within this category.", + "type": "AtlasGlossaryCategory", + "cardinality": "SET", + "isContainer": true + }, + "endDef2": + { + "name": "categories", + "description": "Categories within which this term is organized.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "AGGREGATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the term categorization.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + }, + { + "name": "status", + "description": "Status of the term categorization, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true, + "isUnique": false + } + ] + }, + { + "name": "AtlasGlossaryCategoryAnchor", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Links each category to exactly one glossary, its home glossary. If the glossary is deleted then so are all the categories linked to it.", + "endDef1": + { + "name": "categories", + "description": "Categories contained within this glossary.", + "type": "AtlasGlossary", + "cardinality": "SET", + "isContainer": true + }, + "endDef2": + { + "name": "anchor", + "description": "Glossary in which this category is contained.", + "type": "AtlasGlossaryCategory", + "cardinality": "SINGLE" + }, + "relationshipCategory": "COMPOSITION", + "propagateTags": "NONE" + }, + { + "name": "AtlasGlossaryCategoryHierarchyLink", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Organizes categories into a hierarchy to, for example, create a structure for a taxonomy. A category may have none or one super-categories. This super-category may be in a different glossary.", + "endDef1": + { + "name": "childrenCategories", + "description": "Child categories organized within this category.", + "type": "AtlasGlossaryCategory", + "cardinality": "SET", + "isContainer": true + }, + "endDef2": + { + "name": "parentCategory", + "description": "Parent category in which this category is located (or empty if this is a root-level category).", + "type": "AtlasGlossaryCategory", + "cardinality": "SINGLE" + }, + "relationshipCategory": "AGGREGATION", + "propagateTags": "NONE" + }, + { + "name": "AtlasGlossaryRelatedTerm", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Links terms that may also be of interest. It is like a 'see also' link in a dictionary.", + "endDef1": + { + "name": "seeAlso", + "description": "Linked terms that may also be of interest.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "seeAlso", + "description": "Linked terms that may also be of interest.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Explains why the linked term is of interest.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the related term.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the related term assignment, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the related term assignment.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossarySynonym", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Terms that have the same (or a very similar) meaning, in the same language.", + "endDef1": + { + "name": "synonyms", + "description": "Terms that have the same (or a very similar) meaning, in the same language.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "synonyms", + "description": "Terms that have the same (or a very similar) meaning, in the same language.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the synonym assignment, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryAntonym", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Terms that have the opposite (or near opposite) meaning, in the same language.", + "endDef1": + { + "name": "antonyms", + "description": "Terms that have the opposite (or near opposite) meaning, in the same language.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "antonyms", + "description": "Terms that have the opposite (or near opposite) meaning, in the same language.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression that was used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryPreferredTerm", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Indicates term(s) should be used in place of another. This relationship can be used to encourage adoption of newer vocabularies. This is a weaker version of ReplacementTerm.", + "endDef1": + { + "name": "preferredTerms", + "description": "Preferred term(s) to use instead of this term.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "preferredToTerms", + "description": "Other term(s) that are less common or less preferred than this term.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryReplacementTerm", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Indicates term(s) must be used instead of another. This is stronger version of the PreferredTerm.", + "endDef1": + { + "name": "replacedBy", + "description": "Term(s) that must no longer be used.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "replacementTerms", + "description": "Term(s) that must be used instead.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryTranslation", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Related terms that represent the same meaning, but each written in a different language. Hence one is a translation of the other. The language of each term is defined in the Glossary object that anchors the term.", + "endDef1": + { + "name": "translatedTerms", + "description": "Term(s) that are a translation of this term.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "translationTerms", + "description": "Term(s) for which this term is a translation.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryIsARelationship", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Relationship between a more abstract and more concrete concept. For example, this relationship would be use to say that 'Cat' ISA 'Animal'.", + "endDef1": + { + "name": "classifies", + "description": "More general term that defines a group of terms, for example: 'animal'.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "isA", + "description": "More specific term that is a sub-class of another term, for example: 'cat'.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "AtlasGlossaryValidValue", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "description": "Terms that represent valid values for another, for example: 'red', 'blue', 'green' could all be valid values for a term 'color'.", + "endDef1": + { + "name": "validValuesFor", + "description": "Term for which this is a valid value.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "endDef2": + { + "name": "validValues", + "description": "Valid values for this term.", + "type": "AtlasGlossaryTerm", + "cardinality": "SET" + }, + "relationshipCategory": "ASSOCIATION", + "propagateTags": "NONE", + "attributeDefs": + [ + { + "name": "description", + "description": "Details about the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "expression", + "description": "Expression used to set the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "status", + "description": "Status of the relationship, typically used by discovery engines.", + "typeName": "AtlasGlossaryTermRelationshipStatus", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "steward", + "description": "User responsible for assessing the relationship and deciding if it should be approved or not.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + }, + { + "name": "source", + "description": "Source of the relationship.", + "typeName": "string", + "cardinality": "SINGLE", + "isIndexable": true, + "isOptional": true + } + ] + }, + { + "name": "schema_calculation_view", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.calculationViews", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "calculationViews", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": + { + "type": "CalculationView", + "name": "atlanSchema", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": false + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "table_columns", + "description": "Containment relationship between table (parent) and columns (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Table.columns", + "serviceType": "atlan", + "endDef1": + { + "type": "Table", + "name": "columns", + "description": "Columns that exist within this table.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Column", + "name": "table", + "description": "Table in which this column exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "column_nestedColumns", + "description": "Hierarchical relationship between nested columns.", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Column.nestedColumns", + "serviceType": "atlan", + "endDef1": + { + "type": "Column", + "name": "nestedColumns", + "description": "Nested columns that exist within this column.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Column", + "name": "parentColumn", + "description": "Column in which this sub-column is nested.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "TWO_TO_ONE" + }, + { + "name": "table_partition_columns", + "description": "Containment relationship between table partition (parent) and columns (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__TablePartition.columns", + "serviceType": "atlan", + "endDef1": + { + "type": "TablePartition", + "name": "columns", + "description": "Columns that exist within this table partition.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Column", + "name": "tablePartition", + "description": "Table partition that contains this column.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "view_columns", + "description": "Containment relationship between view (parent) and columns (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__View.columns", + "serviceType": "atlan", + "endDef1": + { + "type": "View", + "name": "columns", + "description": "Columns that exist within this view.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Column", + "name": "view", + "description": "View in which this column exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "calculation_view_columns", + "description": "Containment relationship between calculation view (parent) and columns (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__CalculationView.columns", + "serviceType": "atlan", + "endDef1": + { + "type": "CalculationView", + "name": "columns", + "description": "Columns that exist within this sap calculate view.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": + { + "type": "Column", + "name": "calculationView", + "description": "Calculate view in which this column exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": false + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "materialised_view_columns", + "description": "Containment relationship between materialized view (parent) and columns (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__materialised_view.columns", + "serviceType": "atlan", + "endDef1": + { + "type": "MaterialisedView", + "name": "columns", + "description": "Columns that exist within this materialized view.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Column", + "name": "materialisedView", + "description": "Materialized view in which this column exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "foreign_key_columns", + "description": "Inter-relationship between foreign key columns.", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Column.foreignKeyTo", + "serviceType": "atlan", + "endDef1": + { + "type": "Column", + "name": "foreignKeyTo", + "description": "Columns that use this column as a foreign key.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": + { + "type": "Column", + "name": "foreignKeyFrom", + "description": "Column this foreign key column refers to.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": false + }, + "propagateTags": "NONE" + }, + { + "name": "schema_functions", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.functions", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "functions", + "description": "Functions that exist within this schema.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Function", + "name": "functionSchema", + "description": "Schema in which this function exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "schema_materialised_views", + "description": "Containment relationship between schema (parent) and materialized views (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.materialised_views", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "materialisedViews", + "description": "Materialized views that exist within this schema.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "MaterialisedView", + "name": "atlanSchema", + "description": "Schema in which this materialized view exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "schema_procedures", + "description": "Containment relationship between schema (parent) and stored procedures (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.procedures", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "procedures", + "description": "Stored procedures that exist within this schema.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Procedure", + "name": "atlanSchema", + "description": "Schema in which this stored procedure exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "table_queries", + "description": "Inter-relationship between tables and queries.", + "typeVersion": "1.0", + "relationshipCategory": "ASSOCIATION", + "relationshipLabel": "__Table.queries", + "serviceType": "atlan", + "endDef1": + { + "type": "Table", + "name": "queries", + "description": "Queries that access this table.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Query", + "name": "tables", + "description": "Tables this query accesses.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "propagateTags": "NONE" + }, + { + "name": "view_queries", + "description": "Inter-relationship between views and queries.", + "typeVersion": "1.0", + "relationshipCategory": "ASSOCIATION", + "relationshipLabel": "__View.queries", + "serviceType": "atlan", + "endDef1": + { + "type": "View", + "name": "queries", + "description": "Queries that access this view.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Query", + "name": "views", + "description": "Views this query accesses.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "propagateTags": "NONE" + }, + { + "name": "column_queries", + "description": "Inter-relationship between columns and queries.", + "typeVersion": "1.0", + "relationshipCategory": "ASSOCIATION", + "relationshipLabel": "__Column.queries", + "serviceType": "atlan", + "endDef1": + { + "type": "Column", + "name": "queries", + "description": "Queries that access this column.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Query", + "name": "columns", + "description": "Columns this query accesses.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "propagateTags": "NONE" + }, + { + "name": "database_schemas", + "description": "Containment relationship between database (parent) and schemas (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Database.schemas", + "serviceType": "atlan", + "endDef1": + { + "type": "Database", + "name": "schemas", + "description": "Schemas that exist within this database.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Schema", + "name": "database", + "description": "Database in which this schema exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "schema_tables", + "description": "Containment relationship between schema (parent) and tables (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.tables", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "tables", + "description": "Tables that exist within this schema.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Table", + "name": "atlanSchema", + "description": "Schema in which this table exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "table_facts_dimensions", + "typeVersion": "1.0", + "description": "Relationship between fact tables and dimension tables.", + "relationshipCategory": "ASSOCIATION", + "relationshipLabel": "__Table.dimensions", + "serviceType": "atlan", + "endDef1": + { + "type": "Table", + "name": "dimensions", + "description": "", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": + { + "type": "Table", + "name": "facts", + "description": "", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "propagateTags": "NONE" + }, + { + "name": "partition_tables", + "description": "Containment relationship between table (parent) and partitions (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Table.partitions", + "serviceType": "atlan", + "endDef1": + { + "type": "Table", + "name": "partitions", + "description": "Partitions that exist within this table.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "TablePartition", + "name": "parentTable", + "description": "Table in which this partition exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "partition_parent_table_partition_child_tables", + "description": "Hierarchical relationship between table partitions.", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__TablePartition.childTablePartitions", + "serviceType": "atlan", + "endDef1": + { + "type": "TablePartition", + "name": "childTablePartitions", + "description": "Partitions that exist within this partition.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "TablePartition", + "name": "parentTablePartition", + "description": "Partition in which this partition exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "schema_views", + "description": "Containment relationship between schema (parent) and views (children).", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Schema.views", + "serviceType": "atlan", + "endDef1": + { + "type": "Schema", + "name": "views", + "description": "Views that exist within this schema.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "View", + "name": "atlanSchema", + "description": "Schema in which this view exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "connection_process_inputs", + "description": "Inter-relationships between inputs and connection processes.", + "serviceType": "atlan", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__ConnectionProcess.inputs", + "endDef1": + { + "type": "ConnectionProcess", + "name": "inputs", + "description": "Connection assets that are inputs to this connection process.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Connection", + "name": "inputToConnectionProcesses", + "description": "Connection process to which this asset provides input.", + "isContainer": false, + "cardinality": "SET" + }, + "propagateTags": "NONE" + }, + { + "name": "connection_process_outputs", + "description": "Inter-relationships between outputs and connection processes.", + "serviceType": "atlan", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__ConnectionProcess.outputs", + "endDef1": + { + "type": "ConnectionProcess", + "name": "outputs", + "description": "Connection assets that are outputs from this connection process", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Connection", + "name": "outputFromConnectionProcesses", + "description": "Connection processs from which this asset is produced as output.", + "isContainer": false, + "cardinality": "SET" + }, + "propagateTags": "NONE" + }, + { + "name": "catalog_process_inputs", + "description": "Inter-relationships between inputs and processes.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Process.inputs", + "endDef1": + { + "type": "Process", + "name": "inputs", + "description": "Assets that are inputs to this process.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Catalog", + "name": "inputToProcesses", + "description": "Processes to which this asset provides input.", + "isContainer": false, + "cardinality": "SET" + }, + "propagateTags": "TWO_TO_ONE" + }, + { + "name": "process_catalog_outputs", + "description": "Inter-relationships between outputs and processes.", + "serviceType": "atlas_core", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Process.outputs", + "endDef1": + { + "type": "Process", + "name": "outputs", + "description": "Assets that are outputs from this process.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "Catalog", + "name": "outputFromProcesses", + "description": "Processes from which this asset is produced as output.", + "isContainer": false, + "cardinality": "SET" + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "column_lineage", + "typeVersion": "1.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__Process.columnProcesses", + "serviceType": "atlan", + "endDef1": + { + "type": "Process", + "name": "columnProcesses", + "description": "Processes that detail column-level lineage for this process.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": true + }, + "endDef2": + { + "type": "ColumnProcess", + "name": "process", + "description": "Parent process that contains this column-level process.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": true + }, + "propagateTags": "ONE_TO_TWO" + }, + + { + "name": "access_control_policies", + "typeVersion": "1.1", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__AccessControl.policies", + "serviceType": "atlan", + "endDef1": + { + "type": "AccessControl", + "name": "policies", + "isContainer": true, + "cardinality": "SET" + }, + "endDef2": + { + "type": "AuthPolicy", + "name": "accessControl", + "isContainer": false, + "cardinality": "SINGLE" + }, + "propagateTags": "ONE_TO_TWO" + }, + { + "name": "tableau_project_tableau_workbook", + "description": "Containment relationship between project (parent) and workbooks (children).", + "typeVersion": "1.1", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__TableauProject.workbooks", + "serviceType": "atlan", + "propagateTags": "ONE_TO_TWO", + "endDef1": { + "type": "TableauProject", + "name": "workbooks", + "description": "Workbooks that exist within this project.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": { + "type": "TableauWorkbook", + "name": "project", + "description": "Project in which this workbook exists.", + "isContainer": false, + "cardinality": "SINGLE", + "isLegacyAttribute": false + } + }, + { + "name": "tableau_worksheets_tableau_calculated_fields", + "description": "Inter-relationship between calculated fields and worksheets.", + "typeVersion": "2.0", + "relationshipCategory": "AGGREGATION", + "relationshipLabel": "__TableauWorksheet.calculatedFields", + "serviceType": "atlan", + "endDef1": { + "type": "TableauWorksheet", + "name": "calculatedFields", + "description": "Calculated fields that are used in this worksheet.", + "isContainer": true, + "cardinality": "SET", + "isLegacyAttribute": false + }, + "endDef2": { + "type": "TableauCalculatedField", + "name": "worksheets", + "description": "Worksheets that use this calculated field.", + "isContainer": false, + "cardinality": "SET", + "isLegacyAttribute": false + } + } + ], + "businessMetadataDefs": + [] +} \ No newline at end of file diff --git a/webapp/src/test/resources/deploy/policies/atlas_service.json b/webapp/src/test/resources/deploy/policies/atlas_service.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/policies/bootstrap_admin_policies.json b/webapp/src/test/resources/deploy/policies/bootstrap_admin_policies.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/policies/bootstrap_entity_policies.json b/webapp/src/test/resources/deploy/policies/bootstrap_entity_policies.json new file mode 100644 index 00000000000..a51ec577e40 --- /dev/null +++ b/webapp/src/test/resources/deploy/policies/bootstrap_entity_policies.json @@ -0,0 +1,2864 @@ +{ + "entities": + [ + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 27 + }, + "attributes": + { + "name": "CREATE_SAVEDFILTER", + "qualifiedName": "CREATE_SAVEDFILTER", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$guest", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasUserSavedSearch", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 27 + }, + "attributes": + { + "name": "READ_SAVEDFILTER", + "qualifiedName": "READ_SAVEDFILTER", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasUserSavedSearch", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 27 + }, + "attributes": + { + "name": "UPDATE_SAVEDFILTER", + "qualifiedName": "UPDATE_SAVEDFILTER", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasUserSavedSearch", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 27 + }, + "attributes": + { + "name": "DELETE_SAVEDFILTER", + "qualifiedName": "DELETE_SAVEDFILTER", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasUserSavedSearch", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 26 + }, + "attributes": + { + "name": "LIST_SAVEDFILTER_SELF", + "qualifiedName": "LIST_SAVEDFILTER_SELF", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$guest", + "$member" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasUserSavedSearch", + "entity-classification:*", + "entity:{USER}", + "entity:{USER}:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 26 + }, + "attributes": + { + "name": "UPDATE_SAVEDFILTER_SELF", + "qualifiedName": "UPDATE_SAVEDFILTER_SELF", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$guest", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasUserSavedSearch", + "entity-classification:*", + "entity:{USER}", + "entity:{USER}:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 26 + }, + "attributes": + { + "name": "DELETE_SAVEDFILTER_SELF", + "qualifiedName": "DELETE_SAVEDFILTER_SELF", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$guest", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasUserSavedSearch", + "entity-classification:*", + "entity:{USER}", + "entity:{USER}:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 28 + }, + "attributes": + { + "name": "CREATE_GLOSSARY", + "qualifiedName": "CREATE_GLOSSARY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossary", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 28 + }, + "attributes": + { + "name": "READ_GLOSSARY", + "qualifiedName": "READ_GLOSSARY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$guest", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossary", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 28 + }, + "attributes": + { + "name": "UPDATE_GLOSSARY", + "qualifiedName": "UPDATE_GLOSSARY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossary", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 28 + }, + "attributes": + { + "name": "DELETE_GLOSSARY", + "qualifiedName": "DELETE_GLOSSARY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossary", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 29 + }, + "attributes": + { + "name": "CREATE_TERM", + "qualifiedName": "CREATE_TERM", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryTerm", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 29 + }, + "attributes": + { + "name": "READ_TERM", + "qualifiedName": "READ_TERM", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$guest", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryTerm", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 29 + }, + "attributes": + { + "name": "UPDATE_TERM", + "qualifiedName": "UPDATE_TERM", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryTerm", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 29 + }, + "attributes": + { + "name": "DELETE_TERM", + "qualifiedName": "DELETE_TERM", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryTerm", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 30 + }, + "attributes": + { + "name": "CREATE_CATEGORY", + "qualifiedName": "CREATE_CATEGORY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryCategory", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 30 + }, + "attributes": + { + "name": "READ_CATEGORY", + "qualifiedName": "READ_CATEGORY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$guest", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryCategory", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 30 + }, + "attributes": + { + "name": "UPDATE_CATEGORY", + "qualifiedName": "UPDATE_CATEGORY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryCategory", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 30 + }, + "attributes": + { + "name": "DELETE_CATEGORY", + "qualifiedName": "DELETE_CATEGORY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryCategory", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 34 + }, + "attributes": + { + "name": "CREATE_README", + "qualifiedName": "CREATE_README", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Readme", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 34 + }, + "attributes": + { + "name": "READ_README", + "qualifiedName": "READ_README", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Readme", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 34 + }, + "attributes": + { + "name": "UPDATE_README", + "qualifiedName": "UPDATE_README", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Readme", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 34 + }, + "attributes": + { + "name": "DELETE_README", + "qualifiedName": "DELETE_README", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Readme", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 123 + }, + "attributes": + { + "name": "CREATE_BADGE", + "qualifiedName": "CREATE_BADGE", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Badge", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 123 + }, + "attributes": + { + "name": "READ_BADGE", + "qualifiedName": "READ_BADGE", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$guest", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Badge", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 123 + }, + "attributes": + { + "name": "UPDATE_BADGE", + "qualifiedName": "UPDATE_BADGE", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Badge", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 123 + }, + "attributes": + { + "name": "DELETE_BADGE", + "qualifiedName": "DELETE_BADGE", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Badge", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 35 + }, + "attributes": + { + "name": "CREATE_BOOKMARK", + "qualifiedName": "CREATE_BOOKMARK", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$guest", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlanBookmark", + "entity-classification:*", + "entity:{USER}", + "entity:{USER}:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 35 + }, + "attributes": + { + "name": "READ_BOOKMARK_SELF", + "qualifiedName": "READ_BOOKMARK_SELF", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$guest", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlanBookmark", + "entity-classification:*", + "entity:{USER}", + "entity:{USER}:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 35 + }, + "attributes": + { + "name": "UPDATE_BOOKMARK_SELF", + "qualifiedName": "UPDATE_BOOKMARK_SELF", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$guest", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlanBookmark", + "entity-classification:*", + "entity:{USER}", + "entity:{USER}:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 35 + }, + "attributes": + { + "name": "DELETE_BOOKMARK_SELF", + "qualifiedName": "DELETE_BOOKMARK_SELF", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$guest", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlanBookmark", + "entity-classification:*", + "entity:{USER}", + "entity:{USER}:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "UPDATE_QUERY_CLASSIFICATION", + "qualifiedName": "UPDATE_QUERY_CLASSIFICATION", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "{USER}" + ], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Query", + "entity-type:QueryFolder", + "entity-classification:*", + "entity:{USER}", + "entity:*/{USER}/*" + ], + "policyActions": + [ + "entity-add-classification", + "entity-update-classification", + "entity-remove-classification" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "ADD_TERM_CLASSIFICATION", + "qualifiedName": "ADD_TERM_CLASSIFICATION", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryTerm", + "entity-classification:*", + "classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-add-classification", + "entity-update-classification", + "entity-remove-classification" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 103 + }, + "attributes": + { + "name": "CREATE_LINK", + "qualifiedName": "CREATE_LINK", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Link", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 103 + }, + "attributes": + { + "name": "READ_LINK", + "qualifiedName": "READ_LINK", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Link", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 103 + }, + "attributes": + { + "name": "UPDATE_LINK", + "qualifiedName": "UPDATE_LINK", + "policySubCategory": "default", + "policyCategory": "bootstrap", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Link", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 103 + }, + "attributes": + { + "name": "DELETE_LINK", + "qualifiedName": "DELETE_LINK", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Link", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "CREATE_QUERIES", + "qualifiedName": "CREATE_QUERIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:QueryFolderNamespace", + "entity-type:Query", + "entity-type:QueryFolder", + "entity-type:QueryFolderParent", + "entity-type:QueryFolderChild", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "READ_QUERIES", + "qualifiedName": "READ_QUERIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:QueryFolderNamespace", + "entity-type:Query", + "entity-type:QueryFolder", + "entity-type:QueryFolderParent", + "entity-type:QueryFolderChild", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "UPDATE_QUERIES", + "qualifiedName": "UPDATE_QUERIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:QueryFolderNamespace", + "entity-type:Query", + "entity-type:QueryFolder", + "entity-type:QueryFolderParent", + "entity-type:QueryFolderChild", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "DELETE_QUERIES", + "qualifiedName": "DELETE_QUERIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:QueryFolderNamespace", + "entity-type:Query", + "entity-type:QueryFolder", + "entity-type:QueryFolderParent", + "entity-type:QueryFolderChild", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 107 + }, + "attributes": + { + "name": "CREATE_CONNECTION", + "qualifiedName": "CREATE_CONNECTION", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Connection", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 108 + }, + "attributes": + { + "name": "CREATE_COLLECTION", + "qualifiedName": "CREATE_COLLECTION", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Collection", + "entity-classification:*", + "entity:{USER}", + "entity:*/{USER}/*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 109 + }, + "attributes": + { + "name": "BM_UPDATE_GLOSSARY", + "qualifiedName": "BM_UPDATE_GLOSSARY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossary", + "entity-classification:*", + "entity:*", + "entity-business-metadata:*" + ], + "policyActions": + [ + "entity-update-business-metadata" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 110 + }, + "attributes": + { + "name": "BM_UPDATE_TERM", + "qualifiedName": "BM_UPDATE_TERM", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryTerm", + "entity-classification:*", + "entity:*", + "entity-business-metadata:*" + ], + "policyActions": + [ + "entity-update-business-metadata" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 114 + }, + "attributes": + { + "name": "BM_UPDATE_CATEGORY", + "qualifiedName": "BM_UPDATE_CATEGORY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryCategory", + "entity-classification:*", + "entity:*", + "entity-business-metadata:*" + ], + "policyActions": + [ + "entity-update-business-metadata" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "CREATE_PROCESS_ASSET", + "qualifiedName": "CREATE_PROCESS_ASSET", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Process", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "READ_PROCESS_ASSET", + "qualifiedName": "READ_PROCESS_ASSET", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Process", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "UPDATE_PROCESS_ASSET", + "qualifiedName": "UPDATE_PROCESS_ASSET", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Process", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "DELETE_PROCESS_ASSET", + "qualifiedName": "DELETE_PROCESS_ASSET", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Process", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 117 + }, + "attributes": + { + "name": "CREATE_README_TEMPLATE", + "qualifiedName": "CREATE_README_TEMPLATE", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:ReadmeTemplate", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 117 + }, + "attributes": + { + "name": "READ_README_TEMPLATE", + "qualifiedName": "READ_README_TEMPLATE", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$member", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:ReadmeTemplate", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 117 + }, + "attributes": + { + "name": "UPDATE_README_TEMPLATE", + "qualifiedName": "UPDATE_README_TEMPLATE", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:ReadmeTemplate", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 117 + }, + "attributes": + { + "name": "DELETE_README_TEMPLATE", + "qualifiedName": "DELETE_README_TEMPLATE", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:ReadmeTemplate", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 119 + }, + "attributes": + { + "name": "CREATE_AUDITENTRY", + "qualifiedName": "CREATE_AUDITENTRY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasAuditEntry", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 119 + }, + "attributes": + { + "name": "READ_AUDITENTRY", + "qualifiedName": "READ_AUDITENTRY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasAuditEntry", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 119 + }, + "attributes": + { + "name": "UPDATE_AUDITENTRY", + "qualifiedName": "UPDATE_AUDITENTRY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasAuditEntry", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 119 + }, + "attributes": + { + "name": "DELETE_AUDITENTRY", + "qualifiedName": "DELETE_AUDITENTRY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasAuditEntry", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "UPDATE_ENTITY_BUSINESS_METADATA", + "qualifiedName": "UPDATE_ENTITY_BUSINESS_METADATA", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "admin", + "service-account-atlan-argo", + "service-account-atlan-backend" + ], + "policyGroups": + [], + "policyRoles": + [], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:*", + "entity-classification:*", + "entity:*", + "entity-business-metadata:*" + ], + "policyActions": + [ + "entity-update-business-metadata" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "READ_ENTITY", + "qualifiedName": "READ_ENTITY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "rangertagsync" + ], + "policyGroups": + [], + "policyRoles": + [], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:*", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "CRUD_ENTITY", + "qualifiedName": "CRUD_ENTITY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "admin", + "service-account-atlan-argo", + "service-account-atlan-backend" + ], + "policyGroups": + [], + "policyRoles": + [], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:*", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read", + "entity-create", + "entity-update", + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "AUR_CLASSIFICATION", + "qualifiedName": "AUR_CLASSIFICATION", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "admin", + "service-account-atlan-argo", + "service-account-atlan-backend" + ], + "policyGroups": + [], + "policyRoles": + [], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:*", + "entity-classification:*", + "entity:*", + "classification:*" + ], + "policyActions": + [ + "entity-add-classification", + "entity-update-classification", + "entity-remove-classification" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "AR_ENITY_LABEL", + "qualifiedName": "AR_ENITY_LABEL", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "admin", + "service-account-atlan-argo", + "service-account-atlan-backend" + ], + "policyGroups": + [], + "policyRoles": + [], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:*", + "entity-classification:*", + "entity:*", + "entity-label:*" + ], + "policyActions": + [ + "entity-add-label", + "entity-remove-label" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "CRUD_ENTITY_SAVED_SEARCH", + "qualifiedName": "CRUD_ENTITY_SAVED_SEARCH", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "{USER}" + ], + "policyGroups": + [], + "policyRoles": + [], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:__AtlasUserProfile", + "entity-type:__AtlasUserSavedSearch", + "entity-classification:*", + "entity:{USER}", + "entity:{USER}:*" + ], + "policyActions": + [ + "entity-read", + "entity-create", + "entity-update", + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "CRUD_COLLECTION_FOLDER_QUERY", + "qualifiedName": "CRUD_COLLECTION_FOLDER_QUERY", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "{USER}" + ], + "policyGroups": + [], + "policyRoles": + [ + "$member", + "$admin" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Collection", + "entity-type:Query", + "entity-type:Folder", + "entity-classification:*", + "entity:*/{USER}/*" + ], + "policyActions": + [ + "entity-read", + "entity-create", + "entity-update", + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "EIPA_ATLAS_SERVICE", + "qualifiedName": "EIPA_ATLAS_SERVICE", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "admin", + "service-account-atlan-argo", + "service-account-atlan-backend" + ], + "policyGroups": + [], + "policyRoles": + [], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "atlas-service:*" + ], + "policyActions": + [ + "admin-export", + "admin-import", + "admin-purge", + "admin-audits" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 120 + }, + "attributes": + { + "name": "CREATE_ACCESS_CONTROL_ENTITIES", + "qualifiedName": "CREATE_ACCESS_CONTROL_ENTITIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Persona", + "entity-type:Purpose", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 120 + }, + "attributes": + { + "name": "READ_ACCESS_CONTROL_ENTITIES", + "qualifiedName": "READ_ACCESS_CONTROL_ENTITIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [ + "service-account-atlan-argo", + "service-account-atlan-backend" + ], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Persona", + "entity-type:Purpose", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 120 + }, + "attributes": + { + "name": "UPDATE_ACCESS_CONTROL_ENTITIES", + "qualifiedName": "UPDATE_ACCESS_CONTROL_ENTITIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Persona", + "entity-type:Purpose", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "customAttributes": { + "internalId": 120 + }, + "attributes": + { + "name": "DELETE_ACCESS_CONTROL_ENTITIES", + "qualifiedName": "DELETE_ACCESS_CONTROL_ENTITIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Persona", + "entity-type:Purpose", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "CREATE_AUTH_POLICIES", + "qualifiedName": "CREATE_AUTH_POLICIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "service-account-atlan-argo", + "service-account-atlan-backend" + ], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AuthPolicy", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "READ_AUTH_POLICIES", + "qualifiedName": "READ_AUTH_POLICIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [ + "service-account-atlan-argo", + "service-account-atlan-backend" + ], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AuthPolicy", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-read" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "UPDATE_AUTH_POLICIES", + "qualifiedName": "UPDATE_AUTH_POLICIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "service-account-atlan-argo", + "service-account-atlan-backend" + ], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AuthPolicy", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "DELETE_AUTH_POLICIES", + "qualifiedName": "DELETE_AUTH_POLICIES", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyUsers": + [ + "service-account-atlan-argo", + "service-account-atlan-backend" + ], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AuthPolicy", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "CUD_ENTITY_DENY_GUEST", + "qualifiedName": "CUD_ENTITY_DENY_GUEST", + "description": "cud deny for guest users", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "deny", + "policyPriority": 0, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$guest" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:AtlasGlossaryTerm", + "entity-type:AtlasGlossaryCategory", + "entity-type:AtlasGlossary", + "entity-type:Catalog", + "entity-type:Process", + "entity-type:Connection", + "entity-type:ProcessExecution", + "entity-type:File", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create", + "entity-update", + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "BM_DENY_GUEST", + "qualifiedName": "BM_DENY_GUEST", + "description": "deny guest update entity-business-metadata", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "deny", + "policyPriority": 0, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$guest" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:*", + "entity-classification:*", + "entity:*", + "entity-business-metadata:*" + ], + "policyActions": + [ + "entity-update-business-metadata" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "CUD_CLASSIFICATION_DENY_GUEST", + "qualifiedName": "CUD_CLASSIFICATION_DENY_GUEST", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "deny", + "policyPriority": 0, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$guest" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:*", + "entity-classification:*", + "entity:*", + "classification:*" + ], + "policyActions": + [ + "entity-add-classification", + "entity-update-classification", + "entity-remove-classification" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "FILE_CRUD_ALLOW_USERS", + "qualifiedName": "FILE_CRUD_ALLOW_USERS", + "description": "Allows user to perform crud operation on file asset", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "allow", + "policyPriority": 1, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$admin", + "$api-token-default-access" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:File", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-create", + "entity-read", + "entity-update", + "entity-delete" + ] + } + }, + { + "typeName": "AuthPolicy", + "attributes": + { + "name": "CONNECTION_UPDATE_DENY_MEMBER", + "qualifiedName": "CONNECTION_UPDATE_DENY_MEMBER", + "description": "Policy for connection update deny for members", + "policyCategory": "bootstrap", + "policySubCategory": "default", + "policyServiceName": "atlas", + "policyType": "deny", + "policyPriority": 0, + "policyUsers": + [], + "policyGroups": + [], + "policyRoles": + [ + "$member" + ], + "policyResourceCategory": "ENTITY", + "policyResources": + [ + "entity-type:Connection", + "entity-classification:*", + "entity:*" + ], + "policyActions": + [ + "entity-update" + ] + } + } + ] +} \ No newline at end of file diff --git a/webapp/src/test/resources/deploy/policies/bootstrap_heka_policies.json b/webapp/src/test/resources/deploy/policies/bootstrap_heka_policies.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/policies/bootstrap_relationship_policies.json b/webapp/src/test/resources/deploy/policies/bootstrap_relationship_policies.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/policies/bootstrap_typedef_policies.json b/webapp/src/test/resources/deploy/policies/bootstrap_typedef_policies.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/static/templates/collection_bootstrap_policies.json b/webapp/src/test/resources/deploy/static/templates/collection_bootstrap_policies.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/static/templates/connection_bootstrap_policies.json b/webapp/src/test/resources/deploy/static/templates/connection_bootstrap_policies.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/static/templates/policy_cache_transformer_persona.json b/webapp/src/test/resources/deploy/static/templates/policy_cache_transformer_persona.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/webapp/src/test/resources/deploy/static/templates/policy_cache_transformer_purpose.json b/webapp/src/test/resources/deploy/static/templates/policy_cache_transformer_purpose.json new file mode 100644 index 00000000000..e69de29bb2d