Zoho Community Topic API

The CommunityTopic API from Zoho — 32 operation(s) for communitytopic.

Operations 36

POST /api/v1/communityTopics/{topicId}/unmoderate Unmoderate community topic #
GET /api/v1/communityTopics List forum topics #
POST /api/v1/communityTopics Add community topic #
DELETE /api/v1/communityTopics Permanently delete trashed community topics #
POST /api/v1/communityTopics/{topicId}/associateTags Associate tags to community topic #
POST /api/v1/communityTopics/approve Approve topics #
POST /api/v1/communityTopics/{topicId}/markSpam Report topic as spam #
PUT /api/v1/communityTopics/{topicId}/updateDraft Update Drafted Topic #
GET /api/v1/communityTopics/{topicId} Get topic #
PATCH /api/v1/communityTopics/{topicId} Update community topic #
DELETE /api/v1/communityTopics/{topicId}/deleteDraft Delete drafted community topic #
GET /api/v1/communityTopics/{topicId}/followers List all community topic followers #
POST /api/v1/communityTopics/{topicId}/dissociateTags Dissociate tags from topic #
POST /api/v1/communityTopics/unmoderate Unmoderate community topics #
POST /api/v1/community/markAllTopicsAsSpam Report multiple topics as spam #
POST /api/v1/communityTopics/{topicId}/unlock Unlock community topic #
POST /api/v1/communityTopics/saveDraft Draft community topic #
GET /api/v1/communityModeration/topics List topics pending moderation #
GET /api/v1/communityTopics/{topicId}/participants List topic participants #
POST /api/v1/communityTopics/{topicId}/unfollow Unfollow community topic #
POST /api/v1/communityTopics/moveToTrash Trash unmoderated community topics #
GET /api/v1/communityTopics/count Get community Topics Views Count #
POST /api/v1/communityTopics/{topicId}/unlike Unlike topic #
GET /api/v1/communityTopicTypes Get topic types #
PATCH /api/v1/communityTopicTypes Update topic type preferences #
POST /api/v1/communityTopics/{topicId}/follow Follow community topic #
POST /api/v1/communityTopics/{topicId}/moderate Moderate community topic #
POST /api/v1/communityTopics/{topicId}/move Move a community topic #
POST /api/v1/communityTopics/restore Restore trashed topics #
GET /api/v1/communityModeratedTopics List moderated community topics #
GET /api/v1/communityUsers/{userId}/topics List community topics by user #
GET /api/v1/communityTopics/{topicId}/voters List community topic voters #
POST /api/v1/communityTopics/{topicId}/like Like community topic #
GET /api/v1/communityMyDraftedTopics List all Drafted community Topics #
POST /api/v1/communityTopics/{topicId}/publishDraft Publish community topic draft #

Documentation

Specifications

Code Examples

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/zoho-communitytopic-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

zoho-communitytopic-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Helpcenter Community Topic API
  version: 1.0.0
tags:
- name: CommunityTopic
paths:
  /api/v1/communityTopics/{topicId}/unmoderate:
    post:
      tags:
      - CommunityTopic
      summary: Unmoderate community topic
      description: This API helps unmoderate a forum topic, which means user comments are published without reviewing.
      operationId: unmoderateCommunityTopic
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics:
    get:
      tags:
      - CommunityTopic
      summary: List forum topics
      description: This API lists a particular number of forum topics, based on the limit defined.
      operationId: getAllCommunityTopics
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - $ref: '#/components/parameters/type'
      - $ref: '#/components/parameters/tagName'
      - name: isSticky
        in: query
        description: Key that defines whether the topics to list must be sticky posts or not
        required: false
        style: form
        explode: true
        schema:
          type:
          - boolean
          - 'null'
          description: Key that defines whether the topics to list must be sticky posts or not
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/listAllTopics'
      security:
      - iam-oauth2-schema:
        - Desk.forums.READ
        - Desk.community.READ
      x-audience:
      - external-public
    post:
      tags:
      - CommunityTopic
      summary: Add community topic
      description: 'This API helps add a forum topic in the user community. '
      operationId: addCommunityTopic
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/communityAddTopicJson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/communityMangerTopicJSON'
      security:
      - iam-oauth2-schema:
        - Desk.forums.CREATE
        - Desk.community.CREATE
      x-audience:
      - external-public
    delete:
      tags:
      - CommunityTopic
      summary: Permanently delete trashed community topics
      description: This API permanently deletes forum topics from the trash.
      operationId: deleteTrashedCommunityTopics
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/deleteTopics_moderationTopicIdsJSON'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '200':
          $ref: ./MassActionResponse.json#/components/responses/massActionListResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.DELETE
        - Desk.community.DELETE
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/associateTags:
    post:
      tags:
      - CommunityTopic
      summary: Associate tags to community topic
      description: This API associates quick access/reference tags to a forum topic.
      operationId: addTagsToCommunityTopic
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/tagsRequest'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/associateTagsResponse'
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/approve:
    post:
      tags:
      - CommunityTopic
      summary: Approve topics
      description: This API helps to approve topics and publish them on the forum.
      operationId: approveTopics
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/moderationTopicIdsJSON'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: ./MassActionResponse.json#/components/responses/massActionListResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/markSpam:
    post:
      tags:
      - CommunityTopic
      summary: Report topic as spam
      description: This API marks a forum topic as spam.
      operationId: markATopicAsSpam
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/spamReason'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.basic.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/updateDraft:
    put:
      tags:
      - CommunityTopic
      summary: Update Drafted Topic
      description: This API helps update the draft of a forum topic.
      operationId: updateDraftedCommunityTopic
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/communityAddOrUpdateDraftTopicJson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/communityAddOrUpdateDraftedTopicResponseJSON'
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}:
    get:
      tags:
      - CommunityTopic
      summary: Get topic
      description: This API fetches a forum topic from the user community.
      operationId: getCommunityTopic
      parameters:
      - name: include
        in: query
        description: 'Additional information related to the topics. Values allowed are: @seo@, @featuredImage@ and @participantsCount@.'
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: 'Additional information related to the topics. Values allowed are: @seo@, @featuredImage@ and @participantsCount@.'
          items:
            type:
            - string
            - 'null'
            enum:
            - seo
            - featuredImage
            - participantsCount
            maxLength: 100
            minLength: 0
          uniqueItems: true
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/communityMangerTopicJSON'
      security:
      - iam-oauth2-schema:
        - Desk.forums.READ
        - Desk.community.READ
      x-audience:
      - external-public
    patch:
      tags:
      - CommunityTopic
      summary: Update community topic
      description: This API helps update a published forum topic.
      operationId: updateCommunityTopic
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/communityUpdateTopicJson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/communityMangerTopicJSON'
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/deleteDraft:
    delete:
      tags:
      - CommunityTopic
      summary: Delete drafted community topic
      description: This API deletes a topic draft from the user community.
      operationId: deleteDraftedCommunityTopic
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '500':
          $ref: ./Common.json#/components/responses/internalErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.DELETE
        - Desk.community.DELETE
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/followers:
    get:
      tags:
      - CommunityTopic
      summary: List all community topic followers
      description: 'This API lists a particular number of users who follow a forum topic, based on the limit defined. '
      operationId: getAllCommunityTopicFollowers
      parameters:
      - name: limit
        in: query
        description: Number of users to list
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int32
          description: Number of users to list
          maximum: 50
          minimum: 1
          pattern: ([0-9]+)
      - name: from
        in: query
        description: Index number, starting from which the users must be listed.
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int32
          description: Index number, starting from which the users must be listed.
          minimum: 0
          pattern: ([0-9]+)
      - $ref: '#/components/parameters/userType'
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/listAllCommunityTopicFollowers'
      security:
      - iam-oauth2-schema:
        - Desk.forums.READ
        - Desk.community.READ
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/dissociateTags:
    post:
      tags:
      - CommunityTopic
      summary: Dissociate tags from topic
      description: This API removes quick access/reference tags from a forum topic.
      operationId: deleteCommunityTopicTags
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/deleteTagsoFATopic_tagsRequest'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/unmoderate:
    post:
      tags:
      - CommunityTopic
      summary: Unmoderate community topics
      description: This API unmoderate the moderated forum topics.The comments that are posted during moderation will be displayed to all users without under going any review.
      operationId: unmoderateCommunityTopics
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/unmoderateTopics_moderationTopicIdsJSON'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: ./MassActionResponse.json#/components/responses/massActionListResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/community/markAllTopicsAsSpam:
    post:
      tags:
      - CommunityTopic
      summary: Report multiple topics as spam
      description: This API marks multiple forum topics as spam.
      operationId: markAllTopicsAsSpam
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/reportBulkTopicsAsSpam'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: ./MassActionResponse.json#/components/responses/massActionListResponse
      security:
      - iam-oauth2-schema:
        - Desk.basic.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/unlock:
    post:
      tags:
      - CommunityTopic
      summary: Unlock community topic
      description: This API helps unlock a forum topic, so that further user actions can be performed.
      operationId: unlockCommunityTopic
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/saveDraft:
    post:
      tags:
      - CommunityTopic
      summary: Draft community topic
      description: This API saves a draft of a forum topic.
      operationId: addCommunityTopicAsDraft
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/addDraft_communityAddOrUpdateDraftTopicJson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/communityAddOrUpdateDraftedTopicResponseJSON'
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.CREATE
        - Desk.community.CREATE
      x-audience:
      - external-public
  /api/v1/communityModeration/topics:
    get:
      tags:
      - CommunityTopic
      summary: List topics pending moderation
      description: This API lists a particular number of forum topics that are pending moderation, based on the limit defined.
      operationId: getCommunityModerationTopics
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - $ref: '#/components/parameters/categoryId'
      - $ref: '#/components/parameters/status'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '200':
          $ref: '#/components/responses/listAllModerationTopics'
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.READ
        - Desk.community.READ
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/participants:
    get:
      tags:
      - CommunityTopic
      summary: List topic participants
      description: This API lists a particular number of users who participated in a forum topic, based on the limit defined.
      operationId: getCommunityTopicParticipants
      parameters:
      - name: limit
        in: query
        description: Number of users to list
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int32
          description: Number of users to list
          maximum: 50
          minimum: 1
          pattern: ([0-9]+)
      - name: from
        in: query
        description: Index number, starting from which the users must be listed
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int32
          description: Index number, starting from which the users must be listed
          minimum: 0
          pattern: ([0-9]+)
      - $ref: '#/components/parameters/userType'
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/listAllCommunityTopicFollowers'
      security:
      - iam-oauth2-schema:
        - Desk.forums.READ
        - Desk.community.READ
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/unfollow:
    post:
      tags:
      - CommunityTopic
      summary: Unfollow community topic
      description: This API enables users to unfollow a topic.
      operationId: unfollowCommunityTopic
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '500':
          $ref: ./Common.json#/components/responses/internalErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/moveToTrash:
    post:
      tags:
      - CommunityTopic
      summary: Trash unmoderated community topics
      description: 'This API trashes forum topics that are yet to be moderated for publishing. '
      operationId: deleteUnmoderatedCommunityTopics
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/trashTopics_moderationTopicIdsJSON'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: ./MassActionResponse.json#/components/responses/massActionListResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/count:
    get:
      tags:
      - CommunityTopic
      summary: Get community Topics Views Count
      description: This API fetches the total count of the topics based on the selected view.
      operationId: getCommunityTopicsViewsCount
      parameters:
      - name: viewId
        in: query
        description: ID of a view for which you need to get the count
        required: true
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          description: ID of a view for which you need to get the count
          pattern: ([0-9]+)
      - name: label
        in: query
        description: 'Status label by which topics must be filtered. The value of this key varies according to the topic type. Values allowed are: @NOSTATUS@, @NEEDMOREINFO@, @WORKINGONIT@, @ANSWERED@, @UNANSWERED@, @MAYBELATER@, @UNDERREVIEW@, @IMPLEMENTED@, @WILLNOTIMPLEMENT@, @NOTAPROBLEM@, @TEMPORARYFIX@, @ANALYZING@, @SOLVED@, @UNSOLVED@, and @MOSTVOTED@.'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: 'Status label by which topics must be filtered. The value of this key varies according to the topic type. Values allowed are: @NOSTATUS@, @NEEDMOREINFO@, @WORKINGONIT@, @ANSWERED@, @UNANSWERED@, @MAYBELATER@, @UNDERREVIEW@, @IMPLEMENTED@, @WILLNOTIMPLEMENT@, @NOTAPROBLEM@, @TEMPORARYFIX@, @ANALYZING@, @SOLVED@, @UNSOLVED@, and @MOSTVOTED@.'
          maxLength: 100
          minLength: 0
      - $ref: '#/components/parameters/type'
      - $ref: '#/components/parameters/tagName'
      - $ref: '#/components/parameters/categoryId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '200':
          $ref: '#/components/responses/topicsViewsCountResponse'
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.READ
        - Desk.community.READ
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/unlike:
    post:
      tags:
      - CommunityTopic
      summary: Unlike topic
      description: This API enables users to unlike a topic.
      operationId: unlikeATopic
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopicTypes:
    get:
      tags:
      - CommunityTopic
      summary: Get topic types
      description: This API fetches the topic types defined in the user community of your help desk portal.
      operationId: getCommunityTopicTypes
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/topicTypeResponseJSON'
      security:
      - iam-oauth2-schema:
        - Desk.forums.READ
        - Desk.community.READ
      x-audience:
      - external-public
    patch:
      tags:
      - CommunityTopic
      summary: Update topic type preferences
      description: This API helps set the default topic type and enable/disable other topic types in the user community.
      operationId: updateCommunityTopicTypes
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/topicTypeRequestJSON'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/follow:
    post:
      tags:
      - CommunityTopic
      summary: Follow community topic
      description: This API enables users to follow a topic.
      operationId: followCommunityTopic
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/moderate:
    post:
      tags:
      - CommunityTopic
      summary: Moderate community topic
      description: This API allows to set the forum topics as moderate. The comments that are posted during moderation will not be displayed to users and await for the review.
      operationId: moderateCommunityTopic
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/move:
    post:
      tags:
      - CommunityTopic
      summary: Move a community topic
      description: This API moves a forum topic from one community category to another.
      operationId: moveACommunityTopic
      parameters:
      - $ref: '#/components/parameters/topicId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/communityCategoryIdJSON'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityTopicByPermalink:
    get:
      tags:
      - CommunityTopic
      summary: Get community topic by permalink
      description: This API fetches a forum topic, based on the permalink in the API request.
      operationId: getCommunityTopicByPermalink
      parameters:
      - name: include
        in: query
        description: 'Additional information related to the topics. Values allowed are: @seo@, @featuredImage@ and @participantsCount@.'
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: 'Additional information related to the topics. Values allowed are: @seo@, @featuredImage@ and @participantsCount@.'
          items:
            type:
            - string
            - 'null'
            enum:
            - seo
            - featuredImage
            - participantsCount
            maxLength: 100
            minLength: 0
          uniqueItems: true
      - name: permalink
        in: query
        description: permalink of the topic
        required: true
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: permalink of the topic
          maxLength: 1000
          minLength: 0
          pattern: '[a-z0-9\/%\-\P{InBasicLatin}]+'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '404':
          $ref: ./Common.json#/components/responses/urlNotFoundErrorResponse
        '200':
          $ref: '#/components/responses/communityMangerTopicJSON'
      security:
      - iam-oauth2-schema:
        - Desk.forums.READ
        - Desk.community.READ
      x-audience:
      - external-public
  /api/v1/communityTopics/restore:
    post:
      tags:
      - CommunityTopic
      summary: Restore trashed topics
      description: 'This API restores topics from trash. '
      operationId: addTrashedCommunityTopics
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/restoreTopics_moderationTopicIdsJSON'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: ./MassActionResponse.json#/components/responses/massActionListResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.UPDATE
        - Desk.community.UPDATE
      x-audience:
      - external-public
  /api/v1/communityModeratedTopics:
    get:
      tags:
      - CommunityTopic
      summary: List moderated community topics
      description: This API lists a particular number of moderated topics, based on the limit defined.
      operationId: getModeratedCommunityTopics
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - $ref: '#/components/parameters/categoryId_requiredFalse'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/listAllModeratedTopics'
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.READ
        - Desk.community.READ
      x-audience:
      - external-public
  /api/v1/communityUsers/{userId}/topics:
    get:
      tags:
      - CommunityTopic
      summary: List community topics by user
      description: This API lists a particular number of topics by a user, based on the limit defined.
      operationId: getCommunityTopicsByUser
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - name: startTime
        in: query
        description: Starting time of the time range in which the topics should have been created. The value must be expressed according to the GMT time zone.
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: Starting time of the time range in which the topics should have been created. The value must be expressed according to the GMT time zone.
          maxLength: 100
          minLength: 0
          pattern: (((19|20)\d\d)[-/.]{1}(0?[1-9]|1[012])[-/.]{1}(0?[1-9]|[12][0-9]|3[01])(T)([01]?[0-9]|2[0-3]):[0-5]?[0-9]:[0-5]?[0-9]([/.][\d]{0,3})?(Z))
      - name: endTime
        in: query
        description: Ending time of the time range in which the topics should have been created. The value must be expressed according to the GMT time zone.
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: Ending time of the time range in which the topics should have been created. The value must be expressed according to the GMT time zone.
          maxLength: 100
          minLength: 0
          pattern: (((19|20)\d\d)[-/.]{1}(0?[1-9]|1[012])[-/.]{1}(0?[1-9]|[12][0-9]|3[01])(T)([01]?[0-9]|2[0-3]):[0-5]?[0-9]:[0-5]?[0-9]([/.][\d]{0,3})?(Z))
      - $ref: '#/components/parameters/type'
      - $ref: '#/components/parameters/categoryId_requiredFalse'
      - name: userId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/listAllUserTopics'
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.forums.READ
        - Desk.community.READ
      x-audience:
      - external-public
  /api/v1/communityTopics/{topicId}/voters:
    get:
      tags:
      - CommunityTopic
      summary: List community topic voters
      description: This API lists a particular number of users who voted in a forum topic, based on the limit defined.
      operationId: getCommuntiyTopicVoters
      parameters:
      - name: limit
        in: query
        description: Number of users to list
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int32
          description: Number of users to list
          maximum: 50
          minimum: 1
          pattern: ([0-9]+)
      - name: from
        in: query
        description: Index number, starting from which the users must be listed
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int32
          description: Index number, starting from which the users must be listed
          minimum: 0
          patt

# --- truncated at 32 KB (93 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zoho/refs/heads/main/openapi/zoho-communitytopic-api-openapi.yml