List user-defined types (UDTs)

Tables with the Data API are currently in public preview. Development is ongoing, and the features and functionality are subject to change. Astra DB Serverless, and the use of such, is subject to the DataStax Preview Terms.

Gets information about the user-defined types (UDTs) in a keyspace.

Ready to write code? See the examples for this method to get started. If you are new to the Data API, check out the quickstart.

Result

  • Python

  • TypeScript

  • Java

  • curl

Returns an unordered list of ListTypeDescriptor objects that describe each user-defined type in the keyspace.

Returns a promise that resolves to an unordered list of TypeDescriptor objects that describe each user-defined type in the keyspace.

Returns an unordered list of TableUserDefinedTypeDescriptor objects that describe each user-defined type in the keyspace.

The status.types field in the response describes each user-defined type.

Example response:

{
  "status": {
    "types": [
      {
        "type": "userDefined",
        "udtName": "address",
        "definition": {
          "fields": {
            "city": {
              "type": "text"
            },
            "country": {
              "type": "text"
            }
          }
        },
        "apiSupport": {
          "createTable": true,
          "insert": true,
          "read": true,
          "filter": false,
          "cqlDefinition": "demo.address"
        }
      }
    ]
  }
}

Parameters

  • Python

  • TypeScript

  • Java

  • curl

Use the list_types method, which belongs to the astrapy.Database class.

Method signature
list_types(
  *,
  keyspace: str,
  table_admin_timeout_ms: int,
  request_timeout_ms: int,
  timeout_ms: int,
) -> list[ListTypeDescriptor]
Name Type Summary

keyspace

str

Optional. The keyspace to inspect.

Default: The database’s working keyspace.

table_admin_timeout_ms

int

A timeout, in milliseconds, for the underlying HTTP request. If not provided, the Database setting is used. This parameter is aliased as request_timeout_ms and timeout_ms for convenience.

Use the listTypes method, which belongs to the Db class.

Method signature
async listTypes(
  options?: {
    nameOnly?: false,
    keyspace?: string,
    timeout?: number | TimeoutDescriptor,
  },
): TypeDescriptor[]
Name Type Summary

options

ListTypesOptions

Optional. The options for this operation. See Properties of options for more details.

Properties of options
Name Type Summary

nameOnly

false

Optional. Must be false or undefined to return metadata about the user defined types. Otherwise, only the user defined type names are returned.

keyspace

string

Optional. The keyspace to inspect.

Default: The database’s working keyspace.

timeout

number | TimeoutDescriptor

Optional. A timeout to impose on the underlying API request.

Use the listTypes method, which belongs to the com.datastax.astra.client.databases.Database class.

Method signature
List<TableUserDefinedTypeDescriptor> listTypes()
List<TableUserDefinedTypeDescriptor> listTypes(ListTypesOptions options)
Name Type Summary

options

ListTypesOptions

Optional. The options for this operation, including the keyspace and timeouts.

Use the listTypes command.

Command signature
curl -sS -L -X POST "API_ENDPOINT/api/json/v1/KEYSPACE_NAME" \
--header "Token: APPLICATION_TOKEN" \
--header "Content-Type: application/json" \
--data '{
  "listTypes": {
    "options": {
      "explain": true
    }
  }
}'
Name Type Summary

options.explain

true

Must be true to return metadata about the user-defined types. Otherwise, only the names of the user-defined types are returned.

Examples

The following examples demonstrate how to get metadata about user-defined types in a keyspace.

  • Python

  • TypeScript

  • Java

  • curl

from astrapy import DataAPIClient

# Get a database
client = DataAPIClient("APPLICATION_TOKEN")
database = client.get_database("API_ENDPOINT")

# List type metadata
result = database.list_types()
print(result)
import { DataAPIClient } from "@datastax/astra-db-ts";

// Get a database
const client = new DataAPIClient("APPLICATION_TOKEN");
const database = client.db("API_ENDPOINT");

// List type metadata
(async function () {
  const result = await database.listTypes({ nameOnly: false });

  console.log(result);
})();
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.tables.definition.types.TableUserDefinedTypeDescriptor;
import java.util.List;

public class Example {

  public static void main(String[] args) {
    // Get a database
    Database database = new DataAPIClient("APPLICATION_TOKEN").getDatabase("API_ENDPOINT");

    // List type metadata
    List<TableUserDefinedTypeDescriptor> result = database.listTypes();

    System.out.println(result);
  }
}
curl -sS -L -X POST "API_ENDPOINT/api/json/v1/KEYSPACE_NAME" \
  --header "Token: APPLICATION_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
  "listTypes": {
    "options": {
      "explain": true
    }
  }
}'

Client reference

  • Python

  • TypeScript

  • Java

  • curl

For more information, see the client reference.

For more information, see the client reference.

For more information, see the client reference.

Client reference documentation is not applicable for HTTP.

Was this helpful?

Give Feedback

How can we improve the documentation?

© 2025 DataStax, an IBM Company | Privacy policy | Terms of use | Manage Privacy Choices

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: +1 (650) 389-6000, info@datastax.com