Zoho Article API

The Article API from Zoho — 7 operation(s) for article.

Documentation

Specifications

Code Examples

Other Resources

OpenAPI Specification

zoho-article-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Helpcenter Article API
  version: 1.0.0
tags:
- name: Article
paths:
  /api/v1/articles:
    get:
      tags:
      - Article
      summary: List articles
      description: This API fetches a specific number of articles from your knowledge base, based on the limit defined.
      operationId: getArticles
      parameters:
      - $ref: '#/components/parameters/permission'
      - $ref: '#/components/parameters/authorId'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - name: sortBy
        in: query
        description: 'Key that sorts the articles based on a specific attribute: !@createdTime,@! or !@modifiedTime@! or     !@likeCount@! or !@viewCount@! or !@feedbackCount@! or !@dislikeCount@! or !@positionArticle@!'
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: 'Key that sorts the articles based on a specific attribute: !@createdTime,@! or !@modifiedTime@! or     !@likeCount@! or !@viewCount@! or !@feedbackCount@! or !@dislikeCount@! or !@positionArticle@!'
          enum:
          - createdTime
          - modifiedTime
          - likeCount
          - viewCount
          - feedbackCount
          - dislikeCount
          - -createdTime
          - -modifiedTime
          - -likeCount
          - -viewCount
          - -feedbackCount
          - -dislikeCount
      - name: modifiedTimeRange
        in: query
        description: Key that filters articles modified within a specific date and time range. Enter the dates in the ISO date format of 'yyyy-MM-ddThh:mm:ss.SSSZ,yyyy-MM-ddThh:mm:ss.SSSZ'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: Key that filters articles modified within a specific date and time range. Enter the dates in the ISO date format of 'yyyy-MM-ddThh:mm:ss.SSSZ,yyyy-MM-ddThh:mm:ss.SSSZ'
          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)),(((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))|null
      - name: expiryTimeRange
        in: query
        description: Key that filters articles which will expire within a specific date and time range. Enter the dates in the ISO date format of 'yyyy-MM-ddThh:mm:ss.SSSZ,yyyy-MM-ddThh:mm:ss.SSSZ'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: Key that filters articles which will expire within a specific date and time range. Enter the dates in the ISO date format of 'yyyy-MM-ddThh:mm:ss.SSSZ,yyyy-MM-ddThh:mm:ss.SSSZ'
          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)),(((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))|null
      - $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/listAllNewArticle'
      security:
      - iam-oauth2-schema:
        - Desk.articles.READ
      x-audience:
      - external-public
    post:
      tags:
      - Article
      summary: Create an article
      description: This API creates an article in your helpdesk.
      operationId: createArticle
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      - $ref: '#/components/parameters/templateId'
      requestBody:
        $ref: '#/components/requestBodies/addArticleJson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/articleCUDJson'
      security:
      - iam-oauth2-schema:
        - Desk.articles.CREATE
      x-audience:
      - external-public
  /api/v1/articles/{id}:
    get:
      tags:
      - Article
      summary: Get article
      description: This API fetches an article from your knowledge base.
      operationId: getArticle
      parameters:
      - name: version
        in: query
        description: Version number of the article
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Version number of the article
          maxLength: 100
          minLength: 0
      - $ref: '#/components/parameters/id'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/getArticleNewJson'
      security:
      - iam-oauth2-schema:
        - Desk.articles.READ
      x-audience:
      - external-public
    patch:
      tags:
      - Article
      summary: Update an article
      description: This API updates an existing article.
      operationId: updateArticle
      parameters:
      - $ref: '#/components/parameters/id'
      - $ref: ./Common.json#/components/parameters/orgId
      - $ref: '#/components/parameters/templateId'
      requestBody:
        $ref: '#/components/requestBodies/updateArticleJson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/articleCUDJson'
      security:
      - iam-oauth2-schema:
        - Desk.articles.UPDATE
      x-audience:
      - external-public
  /api/v1/articles/checkPermalinkAvailability:
    post:
      tags:
      - Article
      summary: Validate permalink
      description: This API validates if a permalink is available for a help article.
      operationId: checkArticlePermalinkAvailability
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/validatePermalinkRequestBody'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/validatePermalinkResponse'
      security:
      - iam-oauth2-schema:
        - Desk.articles.READ
      x-audience:
      - external-public
  /api/v1/articles/count:
    get:
      tags:
      - Article
      summary: Get article count
      description: This API returns the number of articles published in the knowledge base of your help desk portal.
      operationId: getArticleCount
      parameters:
      - $ref: '#/components/parameters/permission'
      - $ref: '#/components/parameters/authorId'
      - $ref: '#/components/parameters/categoryId'
      - $ref: '#/components/parameters/status'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/articlesCountJson'
      security:
      - iam-oauth2-schema:
        - Desk.articles.READ
      x-audience:
      - external-public
  /api/v1/articles/preview:
    post:
      tags:
      - Article
      summary: Preview article
      description: This API shows a preview of help articles, through which you can check the content for formatting, alignment, and grammar/spelling errors and get the look and feel of the help article even before publishing it.
      operationId: previewArticle
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/previewJson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/previewJson'
      security:
      - iam-oauth2-schema:
        - Desk.articles.UPDATE
      x-audience:
      - external-public
  /api/v1/articles/moveToTrash:
    post:
      tags:
      - Article
      summary: Move articles to trash
      description: This API moves articles to the Recycle Bin
      operationId: deleteArticle
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/trashArticles_articleIdsJson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: ./MassActionResponse.json#/components/responses/massActionListResponse
      security:
      - iam-oauth2-schema:
        - Desk.articles.DELETE
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/articleSuggestion:
    get:
      tags:
      - Article
      summary: Suggest relevant articles for ticket
      description: This API suggests help articles that could be relevant to resolving a ticket.
      operationId: suggestArticlesForTicket
      parameters:
      - name: departmentId
        in: query
        description: ID of the department to which the help article belongs. If you want to include help articles from all departments, pass 0 as the value of this key
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          description: ID of the department to which the help article belongs. If you want to include help articles from all departments, pass 0 as the value of this key
          pattern: ([0-9]+)
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - name: ticketId
        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:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: ./ArticleTranslation.json#/components/responses/translationListWithRecycleBinEntityWrapper
      security:
      - iam-oauth2-schema:
        - Desk.articles.READ
      x-audience:
      - external-public
components:
  parameters:
    from:
      name: from
      in: query
      description: Index number starting from which the tags must be fetched
      required: false
      style: form
      explode: true
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int32
        description: Index number starting from which the articles must be fetched.
        minimum: 1
        pattern: ([0-9]+)
    status:
      name: status
      in: query
      description: Publishing status of the article. Values allowed are Draft, Published, Review, Expired, Unpublished
      required: false
      style: simple
      explode: true
      schema:
        type: array
        description: Publishing status of the article. Values allowed are @Draft@, @Published@, @Review@, @Expired@, @Unpublished@
        items:
          type: string
          enum:
          - Draft
          - Published
          - Review
          - Expired
          - Unpublished
        uniqueItems: true
    authorId:
      name: authorId
      in: query
      description: ID of article owner
      required: false
      style: form
      explode: true
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        description: ID of article owner
        pattern: ([0-9]+)
    permission:
      name: permission
      in: query
      description: Permission of the article.Values allowed are <br>ALL</br><br>REGISTEREDUSERS</br><br>AGENTS
      required: false
      style: simple
      explode: true
      schema:
        type: array
        description: 'Access permission for the article. Values allowed are: @ALL@, @REGISTEREDUSERS@, and @AGENTS@'
        items:
          type: string
          enum:
          - ALL
          - REGISTEREDUSERS
          - AGENTS
        uniqueItems: true
    templateId:
      name: templateId
      in: header
      description: ID of the template mapped with the article
      required: false
      style: simple
      explode: false
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        pattern: ([0-9]+)
    categoryId:
      name: categoryId
      in: query
      description: ID of the category to which the article belongs
      required: false
      style: form
      explode: true
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        description: ID of the category to which the article belongs
        pattern: ([0-9]+)
    limit:
      name: limit
      in: query
      description: Number of tags to fetch
      required: false
      style: form
      explode: true
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int32
        description: Number of articles to fetch
        maximum: 50
        minimum: 1
        pattern: ([0-9]+)
    id:
      name: id
      in: path
      required: true
      style: simple
      explode: false
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        pattern: ([0-9]+)
  responses:
    previewJson:
      description: previewJson template definitions
      content:
        application/json:
          schema:
            type:
            - 'null'
            - object
            additionalProperties: false
            properties:
              answer:
                type:
                - string
                - 'null'
                maxLength: 16777215
                minLength: 0
              title:
                type:
                - string
                - 'null'
                maxLength: 500
                minLength: 0
            required:
            - answer
            - title
          examples:
            Valid responses Definitions:
              value:
                answer: <div>Demo for article preview<br /></div><div>Lorem Ipsum is simply dummy text of the printing and typesetting industry. <br /></div>
                title: Demo for article preview
    articlesCountJson:
      description: articlesCountJson template definitions
      content:
        application/json:
          schema:
            type:
            - 'null'
            - object
            additionalProperties: false
            properties:
              count:
                type:
                - string
                - 'null'
                - integer
                format: int32
                pattern: ([0-9]+)
            required:
            - count
          examples:
            Valid responses Definitions:
              value:
                count: '5'
    getArticleNewJson:
      description: getArticleNewJson template definitions
      content:
        application/json:
          schema:
            allOf:
            - type: object
              properties:
                quickEdit:
                  type:
                  - 'null'
                  - object
                  additionalProperties: false
                  maxProperties: 2
                  minProperties: 2
                  properties:
                    modifierId:
                      type:
                      - string
                      - 'null'
                      - integer
                      format: int64
                      pattern: ([0-9]+)
                    modifiedBy:
                      type:
                      - 'null'
                      - object
                      additionalProperties: false
                      maxProperties: 5
                      minProperties: 5
                      properties:
                        photoURL:
                          type:
                          - string
                          - 'null'
                          maxLength: 100
                          minLength: 0
                          pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
                        name:
                          type:
                          - string
                          - 'null'
                          maxLength: 50
                          minLength: 0
                        id:
                          type:
                          - string
                          - 'null'
                          - integer
                          format: int64
                          pattern: ([0-9]+)
                        status:
                          type:
                          - string
                          - 'null'
                          enum:
                          - ACTIVE
                          - DISABLED
                          - LICENSE_DOWNGRADED
                          - DELETED
                          - ANONYMIZED
                          - CLOSED
                          maxLength: 100
                          minLength: 0
                        zuid:
                          type:
                          - string
                          - 'null'
                          - integer
                          format: int32
                          pattern: ([0-9]+)
                      required:
                      - id
                      - name
                      - photoURL
                      - status
                      - zuid
                  required:
                  - modifiedBy
                  - modifierId
                secondaryTitles:
                  type:
                  - 'null'
                  - array
                  items:
                    type:
                    - string
                    - 'null'
                    maxLength: 500
                    minLength: 0
                  uniqueItems: false
                followersCount:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
            - type:
              - 'null'
              - object
              additionalProperties: false
              properties:
                modifiedTime:
                  type:
                  - string
                  - 'null'
                  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))
                departmentId:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                dislikeCount:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                modifierId:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                likeCount:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                ownerId:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                latestVersionModifierId:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                translationState:
                  type:
                  - string
                  - 'null'
                  enum:
                  - OUTDATED
                  - UP-TO-DATE
                  - AUTO-TRANSLATE INPROGRESS
                  - AUTO-TRANSLATE FAILED
                  maxLength: 100
                  minLength: 0
                isTrashed:
                  type:
                  - boolean
                  - 'null'
                isTemplate:
                  type:
                  - boolean
                  - 'null'
                isLocked:
                  type:
                  - boolean
                  - 'null'
                createdTime:
                  type:
                  - string
                  - 'null'
                  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))
                id:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                translationSource:
                  $ref: ./ArticleTranslation.json#/components/schemas/translationSourceJson
                latestVersionStatus:
                  type:
                  - string
                  - 'null'
                  enum:
                  - Published
                  - Draft
                  - Review
                  - Expired
                  - Unpublished
                  maxLength: 100
                  minLength: 0
                author:
                  $ref: ./ArticleTranslation.json#/components/schemas/author
                reviewedBy:
                  $ref: ./ArticleTranslation.json#/components/schemas/reviewedBy
                currentVersion:
                  type:
                  - string
                  - 'null'
                  maxLength: 100
                  minLength: 0
                commentCount:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                tags:
                  type:
                  - 'null'
                  - array
                  items:
                    type:
                    - string
                    - 'null'
                    maxLength: 100
                    minLength: 0
                    pattern: '[a-z0-9_\-+%\P{InBasicLatin}\s]+'
                  uniqueItems: false
                sourceLocale:
                  type:
                  - string
                  - 'null'
                  enum:
                  - en
                  - ja
                  - zh
                  - es
                  - de
                  - fr
                  - tr
                  - ru
                  - pt
                  - it
                  - nl
                  - da
                  - sv
                  - pl
                  - ar
                  - he
                  - af
                  - cs
                  - fr-ca
                  - bg
                  - fi
                  - el
                  - hu
                  - id
                  - nb
                  - ro
                  - th
                  - uk
                  - vi
                  - ur
                  - hi
                  - te
                  - kn
                  - ta
                  - mr
                  - ko
                  - fa
                  - bn
                  - gu
                  - ms
                  - ml
                  - en-gb
                  - sk
                  - hr
                  - sl
                  - zh_TW
                  - zh-tw
                  - ca
                  - ka
                  - kk
                  - my
                  - km
                  - pt-br
                  maxLength: 100
                  minLength: 0
                  pattern: ([a-zA-Z]{2,4}([-_][a-zA-Z]{2})?)
                translationId:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                webUrl:
                  type:
                  - string
                  - 'null'
                  maxLength: 500
                  minLength: 0
                  pattern: (^(ht|f)tp(s?)\://[-.\w]*(/?)([a-zA-Z0-9\-\.\?\,\:\'/\\+=&amp;%\$#_@]*)?$)
                feedbackCount:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int32
                  pattern: ([0-9]+)
                latestPublishedVersion:
                  type:
                  - string
                  - 'null'
                  maxLength: 100
                  minLength: 0
                position:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int32
                  pattern: ([0-9]+)
                metrics:
                  $ref: ./Article.json#/components/schemas/metrics
                templateUsageCount:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                templateUsedUsersCount:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                templateLastUpdatedTime:
                  type:
                  - string
                  - 'null'
                  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))
                permalink:
                  type:
                  - string
                  - 'null'
                  maxLength: 500
                  minLength: 0
                  pattern: '[a-zA-Z0-9%\-._/?\P{InBasicLatin}]*'
                latestVersionModifiedBy:
                  $ref: ./ArticleTranslation.json#/components/schemas/modifiedBy
                status:
                  type:
                  - string
                  - 'null'
                  enum:
                  - Published
                  - Draft
                  - Review
                  - Expired
                  - Unpublished
                  maxLength: 100
                  minLength: 0
                attachments:
                  $ref: ./ArticleTranslation.json#/components/schemas/attachmentArr
                reviewedTime:
                  type:
                  - string
                  - 'null'
                  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))
                creatorId:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                locale:
                  type:
                  - string
                  - 'null'
                  enum:
                  - en
                  - ja
                  - zh
                  - es
                  - de
                  - fr
                  - tr
                  - ru
                  - pt
                  - it
                  - nl
                  - da
                  - sv
                  - pl
                  - ar
                  - he
                  - af
                  - cs
                  - fr-ca
                  - bg
                  - fi
                  - el
                  - hu
                  - id
                  - nb
                  - ro
                  - th
                  - uk
                  - vi
                  - ur
                  - hi
                  - te
                  - kn
                  - ta
                  - mr
                  - ko
                  - fa
                  - bn
                  - gu
                  - ms
                  - ml
                  - en-gb
                  - sk
                  - hr
                  - sl
                  - zh_TW
                  - zh-tw
                  - ca
                  - ka
                  - kk
                  - my
                  - km
                  - pt-br
                  maxLength: 100
                  minLength: 0
                  pattern: ([a-zA-Z]{2,4}([-_][a-zA-Z]{2})?)
                title:
                  type:
                  - string
                  - 'null'
                  maxLength: 500
                  minLength: 0
                expiryDate:
                  type:
                  - string
                  - 'null'
                  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))
                modifiedBy:
                  $ref: ./ArticleTranslation.json#/components/schemas/modifiedBy
                viewCount:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                seo:
                  $ref: ./Article.json#/components/schemas/seo
                owner:
                  $ref: ./ArticleTranslation.json#/components/schemas/owner
                summary:
                  type:
                  - string
                  - 'null'
                  maxLength: 65553
                  minLength: 0
                isFollowing:
                  type:
                  - boolean
                  - 'null'
                myVote:
                  type:
                  - string
                  - 'null'
                  maxLength: 100
                  minLength: 0
                permission:
                  type:
                  - string
                  - 'null'
                  enum:
                  - ALL
                  - REGISTEREDUSERS
                  - AGENTS
                  maxLength: 100
                  minLength: 0
                authorId:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                usageCount:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                rootCategoryId:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                answer:
                  type:
                  - string
                  - 'null'
                  maxLength: 16777215
                  minLength: 0
                createdBy:
                  $ref: ./ArticleTranslation.json#/components/schemas/createdBy
                latestVersion:
                  type:
                  - string
                  - 'null'
                  maxLength: 100
                  minLength: 0
                portalUrl:
                  type:
                  - string
                  - 'null'
                  maxLength: 500
                  minLength: 0
                  pattern: (^(ht|f)tp(s?)\://[-.\w]*(/?)([a-zA-Z0-9\-\.\?\,\:\'/\\+=&amp;%\$#_@]*)?$)
                attachmentCount:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
                availableLocaleTranslations:
                  $ref: ./Article.json#/components/schemas/availableLocaleTranslationsNew
                category:
                  $ref: ./ArticleTranslation.json#/components/schemas/category
                categoryId:
                  type:
                  - string
                  - 'null'
                  - integer
                  format: int64
                  pattern: ([0-9]+)
              required:
              - answer
        

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