Skip to main content
GET
https://sandbox.getcollate.io/api
/
v1
/
topics
GET /v1/topics
from metadata.sdk import configure
from metadata.sdk.entities import Topics

configure(
    host="https://your-company.getcollate.io/api",
    jwt_token="your-jwt-token"
)

# List first page
topics = Topics.list(limit=50)
for t in topics.data:
    print(f"{t.fullyQualifiedName}")

# List all with auto-pagination
for t in Topics.list_all():
    print(f"{t.fullyQualifiedName}")

# Filter by service
topics = Topics.list(
    service="sample_kafka",
    fields=["owners", "tags", "domain"],
    limit=50
)

for t in topics.data:
    print(f"{t.fullyQualifiedName}")
    if t.owners:
        print(f"  Owners: {[o.name for o in t.owners]}")
    if t.tags:
        print(f"  Tags: {[t.tagFQN for t in t.tags]}")
{
  "data": [
    {
      "id": "0a021819-982e-4ee4-a5a2-4af30eaa3016",
      "name": "address_book",
      "fullyQualifiedName": "sample_kafka.address_book",
      "description": "All Protobuf record related events gets captured in this topic",
      "version": 0.1,
      "updatedAt": 1769982663546,
      "updatedBy": "admin",
      "service": {
        "id": "469ef25e-9bdf-4d5f-8553-eb0ce8581f30",
        "type": "messagingService",
        "name": "sample_kafka",
        "fullyQualifiedName": "sample_kafka",
        "displayName": "sample_kafka",
        "deleted": false
      },
      "serviceType": "Kafka",
      "messageSchema": {
        "schemaText": "syntax = \"proto2\";\npackage tutorial;\nmessage Person { ... }",
        "schemaType": "Protobuf",
        "schemaFields": [
          {
            "name": "AddressBook",
            "dataType": "RECORD",
            "fullyQualifiedName": "sample_kafka.address_book.AddressBook",
            "children": []
          }
        ]
      },
      "partitions": 1,
      "cleanupPolicies": ["delete"],
      "replicationFactor": 1,
      "maximumMessageSize": 1,
      "retentionSize": -1,
      "deleted": false,
      "owners": [],
      "tags": [],
      "domains": []
    }
  ],
  "paging": {
    "after": "...",
    "total": 12
  }
}

List Topics

List all topics with optional filtering and pagination.

Query Parameters

service
string
Filter by messaging service fully qualified name.
limit
integer
default:"10"
Maximum number of results to return (max: 1000000).
before
string
Cursor for backward pagination.
after
string
Cursor for forward pagination.
fields
string
Comma-separated list of fields to include: owners, tags, followers, votes, extension, domains, sourceHash. See Supported Fields below.
include
string
default:"non-deleted"
Include all, deleted, or non-deleted entities.
GET /v1/topics
from metadata.sdk import configure
from metadata.sdk.entities import Topics

configure(
    host="https://your-company.getcollate.io/api",
    jwt_token="your-jwt-token"
)

# List first page
topics = Topics.list(limit=50)
for t in topics.data:
    print(f"{t.fullyQualifiedName}")

# List all with auto-pagination
for t in Topics.list_all():
    print(f"{t.fullyQualifiedName}")

# Filter by service
topics = Topics.list(
    service="sample_kafka",
    fields=["owners", "tags", "domain"],
    limit=50
)

for t in topics.data:
    print(f"{t.fullyQualifiedName}")
    if t.owners:
        print(f"  Owners: {[o.name for o in t.owners]}")
    if t.tags:
        print(f"  Tags: {[t.tagFQN for t in t.tags]}")
{
  "data": [
    {
      "id": "0a021819-982e-4ee4-a5a2-4af30eaa3016",
      "name": "address_book",
      "fullyQualifiedName": "sample_kafka.address_book",
      "description": "All Protobuf record related events gets captured in this topic",
      "version": 0.1,
      "updatedAt": 1769982663546,
      "updatedBy": "admin",
      "service": {
        "id": "469ef25e-9bdf-4d5f-8553-eb0ce8581f30",
        "type": "messagingService",
        "name": "sample_kafka",
        "fullyQualifiedName": "sample_kafka",
        "displayName": "sample_kafka",
        "deleted": false
      },
      "serviceType": "Kafka",
      "messageSchema": {
        "schemaText": "syntax = \"proto2\";\npackage tutorial;\nmessage Person { ... }",
        "schemaType": "Protobuf",
        "schemaFields": [
          {
            "name": "AddressBook",
            "dataType": "RECORD",
            "fullyQualifiedName": "sample_kafka.address_book.AddressBook",
            "children": []
          }
        ]
      },
      "partitions": 1,
      "cleanupPolicies": ["delete"],
      "replicationFactor": 1,
      "maximumMessageSize": 1,
      "retentionSize": -1,
      "deleted": false,
      "owners": [],
      "tags": [],
      "domains": []
    }
  ],
  "paging": {
    "after": "...",
    "total": 12
  }
}

Returns

Returns a paginated list of topic objects. By default, only basic fields are included. Use the fields parameter to request additional data.

Response

data
array
Array of topic objects.
paging
object
Pagination information.

Supported Fields

The following fields can be requested via the fields query parameter:
FieldDescription
ownersOwner references (users and teams)
tagsClassification tags
followersUsers following the topic
votesUser votes and ratings
extensionCustom property values
domainsDomain assignments for governance
sourceHashHash for change detection

Error Handling

CodeError TypeDescription
401UNAUTHORIZEDInvalid or missing authentication token
403FORBIDDENUser lacks permission to list topics