hunk.code_window: });
   ```
   If successful this will return the internal ID generated by Novu and the topic key given by the user.
   To rename a topic, this call can be used:
   ```typescript
  
hunk.labels: keep keep keep keep add keep keep keep
hunk.after_edit: That topic key can be used to retrieve the whole Topic entity:
   ```typescript
   import { Novu } from '@novu/node';
   const novu = new Novu(process.env.NOVU_API_KEY);
   const key = 'unique-topic-identifier';
   const result = await novu.topics.get(key);
   ```
  
hunk.file_path: docs/docs/platform/topics.md
hunk.type: add
file: import { AxiosInstance } from 'axios';
  import { TopicKey, TopicName } from '@novu/shared';
  
  import {
    ITopicPayload,
    ITopicPaginationPayload,
    ITopics,
    ITopicSubscribersPayload,
  } from './topic.interface';
  
  import { WithHttp } from '../novu.interface';
  
  export class Topics extends WithHttp implements ITopics {
    async addSubscribers(topicKey: TopicKey, data: ITopicSubscribersPayload) {
      return await this.http.post(`/topics/${topicKey}/subscribers`, {
        ...data,
      });
    }
  
    async removeSubscribers(topicKey: TopicKey, data: ITopicSubscribersPayload) {
      return await this.http.post(`/topics/${topicKey}/subscribers/removal`, {
        ...data,
      });
    }
  
    async list(data: ITopicPaginationPayload) {
      return await this.http.get(`/topics`, {
        params: {
          page: data.page,
          ...(data?.pageSize && { pageSize: data.pageSize }),
        },
      });
    }
  
    async get(topicKey: TopicKey) {
      return await this.http.get(`/topics`, {
        params: {
          key: topicKey,
        },
      });
    }
  
    async rename(topicKey: TopicKey, newName: TopicName) {
      return await this.http.patch(`/topics/${topicKey}`, {
        name: newName,
      });
    }
  
    async create(data: ITopicPayload) {
      return await this.http.post(`/topics`, {
        key: data.key,
        name: data.name,
      });
    }
  }
  