Genesys Knowledge API

Knowledge administration and search

Operations 127

GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/categories Get categories #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/categories Create new category #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/categories/{categoryId} Get category #
DELETE /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/categories/{categoryId} Delete category #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/categories/{categoryId} Update category #
GET /api/v2/knowledge/integrations/{integrationId}/options Get sync options available for a knowledge-connect integration #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId} Get knowledge base #
DELETE /api/v2/knowledge/knowledgebases/{knowledgeBaseId} Delete knowledge base #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId} Update knowledge base #
GET /api/v2/knowledge/knowledgebases Get knowledge bases #
POST /api/v2/knowledge/knowledgebases Create new knowledge base #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/unanswered/groups Get knowledge base unanswered groups #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/unanswered/groups/{groupId} Get knowledge base unanswered group for a particular groupId #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/unanswered/groups/{groupId}/phrasegroups/{phraseGroupId} Get knowledge base unanswered phrase group for a particular phraseGroupId #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/unanswered/groups/{groupId}/phrasegroups/{phraseGroupId} Update a Knowledge base unanswered phrase group #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/labels/{labelId} Get label #
DELETE /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/labels/{labelId} Delete label #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/labels/{labelId} Update label #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/labels Get labels #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/labels Create new label #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/sources Get Knowledge integration sources #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/sources/salesforce/{sourceId} Get Salesforce Knowledge integration source #
PUT /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/sources/salesforce/{sourceId} Update Salesforce Knowledge integration source #
DELETE /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/sources/salesforce/{sourceId} Delete Salesforce Knowledge integration source #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/sources/salesforce/{sourceId}/sync Start sync on Salesforce Knowledge integration source #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/sources/salesforce Create Salesforce Knowledge integration source #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/sources/servicenow/{sourceId} Get ServiceNow Knowledge integration source #
PUT /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/sources/servicenow/{sourceId} Update ServiceNow Knowledge integration source #
DELETE /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/sources/servicenow/{sourceId} Delete ServiceNow Knowledge integration source #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/sources/servicenow/{sourceId}/sync Start synchronization on ServiceNow Knowledge integration source #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/sources/servicenow Create ServiceNow Knowledge integration source #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/uploads/urls/jobs/{jobId} Get content upload from URL job status #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/uploads/urls/jobs Create content upload from URL job #
POST /api/v2/knowledge/documentuploads Creates a presigned URL for uploading a knowledge import file with a set of documents #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/answers Answer documents. #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/chunks/search/{searchId} Register chunk search result. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/chunks/search Search for chunks in a knowledge base #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId} Get document. #
DELETE /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId} Delete document. #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId} Update document. #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/versions/{versionId} Get document version. #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/versions Get document versions. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/versions Creates or restores a document version. #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents Get documents. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents Create document. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/bulk/remove Bulk remove documents. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/bulk/update Bulk update documents. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/versions/bulk/add Bulk add document versions. #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/variations/{documentVariationId} Get a variation for a document. #
DELETE /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/variations/{documentVariationId} Delete a variation for a document. #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/variations/{documentVariationId} Update a variation for a document. #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/variations Get variations for a document. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/variations Create a variation for a document. #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/versions/{versionId}/variations/{variationId} Get variation for the given document version. #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/versions/{versionId}/variations Get variations for the given document version. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/copies Indicate that the document was copied by the user. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/presentations Indicate that documents were presented to the user. #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/feedback Get a list of feedback records given on documents in a knowledge base #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/feedback/{feedbackId} Get a single feedback record given on a document #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/feedback/{feedbackId} Update feedback on a document #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/feedback Get a list of feedback records given on a document #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/feedback Give feedback on a document #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/query Query for knowledge documents. #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/export/jobs/{exportJobId} Get export job report #
DELETE /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/export/jobs/{exportJobId} Delete export job #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/export/jobs Create export job #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/import/jobs/{importJobId} Get import job report #
DELETE /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/import/jobs/{importJobId} Delete import job #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/import/jobs/{importJobId} Start import job #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/import/jobs Create import job #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/synchronize/jobs/{syncJobId} Get synchronization job report #
DELETE /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/synchronize/jobs/{syncJobId} Delete synchronization job #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/synchronize/jobs/{syncJobId} Update synchronization job #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/synchronize/jobs Create synchronization job #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/operations Get operations #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/operations/users/query Get ids of operation creator users and oauth clients #
GET /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/parse/jobs/{parseJobId} Get parse job report #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/parse/jobs/{parseJobId} Send update to the parse operation #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/parse/jobs/{parseJobId}/import Import the parsed articles #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/parse/jobs Create parse job #
PATCH /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/search/{searchId} Update search result. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/search/suggestions Query the knowledge documents to provide suggestions for auto completion. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/search Search the documents in a knowledge base. #
POST /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/documents/{documentId}/views Create view for a document. #
GET /api/v2/knowledge/connections/{connectionId}/options Get connection options #
GET /api/v2/knowledge/connections/{connectionId} Get connection #
DELETE /api/v2/knowledge/connections/{connectionId} Delete connection #
PATCH /api/v2/knowledge/connections/{connectionId} Update connection #
GET /api/v2/knowledge/connections Get connections #
POST /api/v2/knowledge/connections Create new connection #
GET /api/v2/knowledge/settings/{knowledgeSettingId} Get Knowledge setting. #
DELETE /api/v2/knowledge/settings/{knowledgeSettingId} Delete Knowledge setting. #
PATCH /api/v2/knowledge/settings/{knowledgeSettingId} Update Knowledge setting. #
GET /api/v2/knowledge/settings Get Knowledge settings. #
POST /api/v2/knowledge/settings Create Knowledge setting. #
POST /api/v2/knowledge/search/preview Get Knowledge Search Preview #
POST /api/v2/knowledge/search Get Knowledge Search #
GET /api/v2/knowledge/sources/{sourceId} Get source #
PUT /api/v2/knowledge/sources/{sourceId} Update the source #
DELETE /api/v2/knowledge/sources/{sourceId} Delete source #
GET /api/v2/knowledge/sources List sources #
POST /api/v2/knowledge/sources Create a new source #
GET /api/v2/knowledge/sources/{sourceId}/synchronizations/{synchronizationId}/deletions/{fileId} Get a deletion entry associated with the synchronization #
DELETE /api/v2/knowledge/sources/{sourceId}/synchronizations/{synchronizationId}/deletions/{fileId} Remove a deletion entry associated with the synchronization #
GET /api/v2/knowledge/sources/{sourceId}/synchronizations/{synchronizationId}/deletions Get deletion entries associated with the synchronization. #
POST /api/v2/knowledge/sources/{sourceId}/synchronizations/{synchronizationId}/deletions Mark a previously synced file for deletion in the synchronization. #
GET /api/v2/knowledge/sources/{sourceId}/synchronizations/{synchronizationId} Get a specific synchronization of a source. #
PATCH /api/v2/knowledge/sources/{sourceId}/synchronizations/{synchronizationId} Update synchronization. #
GET /api/v2/knowledge/sources/{sourceId}/synchronizations/{synchronizationId}/uploads/{fileId} Get a file upload entry associated with the synchronization #
DELETE /api/v2/knowledge/sources/{sourceId}/synchronizations/{synchronizationId}/uploads/{fileId} Remove a file upload entry associated with the synchronization #
GET /api/v2/knowledge/sources/{sourceId}/synchronizations/{synchronizationId}/uploads Get file upload entries associated with the synchronization #
POST /api/v2/knowledge/sources/{sourceId}/synchronizations/{synchronizationId}/uploads Create presigned URL for uploading a file in the synchronization. #
GET /api/v2/knowledge/sources/{sourceId}/synchronizations Get synchronizations of a source. #
POST /api/v2/knowledge/sources/{sourceId}/synchronizations Start a manual synchronization from a source. #
GET /api/v2/knowledge/sources/synchronizations Get synchronizations of all sources of the organization. #
POST /api/v2/knowledge/guest/sessions/{sessionId}/documents/answers Answer documents. #
POST /api/v2/knowledge/guest/sessions/{sessionId}/documents/{documentId}/feedback Give feedback on a document #
GET /api/v2/knowledge/guest/sessions/{sessionId}/documents/{documentId} Get a knowledge document by ID. #
GET /api/v2/knowledge/guest/sessions/{sessionId}/documents Get documents. #
POST /api/v2/knowledge/guest/sessions/{sessionId}/documents/{documentId}/copies Indicate that the document was copied by the user. #
POST /api/v2/knowledge/guest/sessions/{sessionId}/documents/presentations Indicate that documents were presented to the user. #
POST /api/v2/knowledge/guest/sessions/{sessionId}/documents/{documentId}/views Create view event for a document. #
GET /api/v2/knowledge/guest/sessions/{sessionId}/categories Get categories #
POST /api/v2/knowledge/guest/sessions/{sessionId}/documents/search Search the documents in a guest session. #
POST /api/v2/knowledge/guest/sessions/{sessionId}/documents/search/suggestions Query the knowledge documents to provide suggestions for auto completion. #
PATCH /api/v2/knowledge/guest/sessions/{sessionId}/documents/search/{searchId} Update search result. #
POST /api/v2/knowledge/guest/sessions Create guest session #

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/genesys-knowledge-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

genesys-knowledge-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: With the PureCloud Platform API, you can control all aspects of your PureCloud environment. With the APIs you can access the system configuration, manage conversations and more.
  version: v2
  title: PureCloud Platform Agent Assistants Knowledge API
  termsOfService: https://help.genesys.cloud/articles/terms-and-conditions/
  contact:
    name: PureCloud Developer Evangelists
    url: https://developer.genesys.cloud/
    email: DeveloperEvangelists@genesys.com
  license:
    name: UNLICENSED
    url: https://help.genesys.cloud/articles/terms-and-conditions/
servers:
- url: https://api.mypurecloud.com
tags:
- name: Knowledge
  description: Knowledge administration and search
paths:
  /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/categories:
    get:
      tags:
      - Knowledge
      summary: Get categories
      description: ''
      operationId: getKnowledgeKnowledgebaseCategories
      parameters:
      - name: knowledgeBaseId
        in: path
        description: Knowledge base ID
        required: true
        schema:
          type: string
      - name: before
        in: query
        description: The cursor that points to the start of the set of entities that has been returned.
        required: false
        schema:
          type: string
      - name: after
        in: query
        description: The cursor that points to the end of the set of entities that has been returned.
        required: false
        schema:
          type: string
      - name: pageSize
        in: query
        description: Number of entities to return. Maximum of 200.
        required: false
        schema:
          type: string
      - name: parentId
        in: query
        description: If specified, retrieves the children categories by parent category ID.
        required: false
        schema:
          type: string
      - name: isRoot
        in: query
        description: If specified, retrieves only the root categories.
        required: false
        schema:
          type: boolean
      - name: name
        in: query
        description: Filter to return the categories that starts with the given category name.
        required: false
        schema:
          type: string
      - name: sortBy
        in: query
        description: 'Name: sort by category names alphabetically; Hierarchy: sort by the full path of hierarchical category names alphabetically'
        required: false
        schema:
          type: string
          enum:
          - Name
          - Hierarchy
          default: Name
      - name: expand
        in: query
        description: 'The specified entity attribute will be filled. Supported value:"Ancestors": every ancestors will be filled via the parent attribute recursively,but only the id, name, parentId will be present for the ancestors.'
        required: false
        schema:
          type: string
      - name: includeDocumentCount
        in: query
        description: If specified, retrieves the number of documents related to category.
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryResponseListing'
        '400':
          description: The request could not be understood by the server due to malformed syntax.
          x-inin-error-codes:
            bad.request: The request could not be understood by the server due to malformed syntax.
            response.entity.too.large: The response is over the size limit. Reduce pageSize or expand list to reduce response size if applicable
            invalid.date: 'Dates must be specified as ISO-8601 strings. For example: yyyy-MM-ddTHH:mm:ss.SSSZ'
            invalid.query.param.value: 'Value [%s] is not valid for parameter [%s]. Allowable values are: %s'
            invalid.property: Value [%s] is not a valid property for object [%s]
            constraint.validation: Input parameters do not match the required criteria
            invalid.value: 'Value [%s] is not valid for field type [%s]. Allowable values are: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: No authentication bearer token specified in authorization header.
          x-inin-error-codes:
            authentication.required: No authentication bearer token specified in authorization header.
            ip.not.authorized: 'Requests originating from this IP address are not authorized: [%s]'
            bad.credentials: Invalid login credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: You are not authorized to perform the requested action.
          x-inin-error-codes:
            missing.division.permission: Unable to perform the requested action. You are missing the following permission '%s' in the provided division(s).
            app.not.authorized.for.scope: App not authorized to use scope %s
            missing.permissions: 'Unable to perform the requested action. You are missing the following permission(s): %s'
            not.authorized: You are not authorized to perform the requested action.
            missing.any.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s'
            authz.policy.denied: 'Unable to perform the requested action. Your organization''s security policies have denied access. Policy ID(s): [%s]'
            missing.any.division.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s in at least one of the following division(s): %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: The requested resource was not found.
          x-inin-error-codes:
            knowledgebase.not.found: Knowledge Base does not exist
            not.found: The requested resource was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '408':
          description: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          x-inin-error-codes:
            client.timeout: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: The request conflicts with the current state of the target resource.
          x-inin-error-codes:
            request.conflict: The request conflicts with the current state of the target resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '413':
          description: 'The request is over the size limit. Maximum bytes: %s'
          x-inin-error-codes:
            request.entity.too.large: 'The request is over the size limit. Maximum bytes: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '415':
          description: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          x-inin-error-codes:
            unsupported.media.type: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '429':
          description: Rate limit exceeded the maximum. Retry the request in [%s] seconds
          x-inin-error-codes:
            too.many.requests.retry.after: Rate limit exceeded the maximum. Retry the request in [%s] seconds
            too.many.requests: Rate limit exceeded the maximum [%s] requests within [%s] seconds
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: The server encountered an unexpected condition which prevented it from fulfilling the request.
          x-inin-error-codes:
            internal.server.error: The server encountered an unexpected condition which prevented it from fulfilling the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '503':
          description: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          x-inin-error-codes:
            service.unavailable: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '504':
          description: The request timed out.
          x-inin-error-codes:
            authentication.request.timeout: Authentication request timeout.
            request.timeout: The request timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      security:
      - PureCloud OAuth:
        - knowledge
        - knowledge:readonly
      x-inin-requires-permissions:
        type: ALL
        permissions:
        - knowledge:category:view
      x-purecloud-method-name: getKnowledgeKnowledgebaseCategories
    post:
      tags:
      - Knowledge
      summary: Create new category
      description: ''
      operationId: postKnowledgeKnowledgebaseCategories
      parameters:
      - name: knowledgeBaseId
        in: path
        description: Knowledge base ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryResponse'
        '201':
          description: Category created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryResponse'
        '400':
          description: The request could not be understood by the server due to malformed syntax.
          x-inin-error-codes:
            parent.category.not.found: Parent category does not exist
            bad.request: The request could not be understood by the server due to malformed syntax.
            response.entity.too.large: The response is over the size limit. Reduce pageSize or expand list to reduce response size if applicable
            invalid.date: 'Dates must be specified as ISO-8601 strings. For example: yyyy-MM-ddTHH:mm:ss.SSSZ'
            invalid.query.param.value: 'Value [%s] is not valid for parameter [%s]. Allowable values are: %s'
            client.failed.request: The client did not produce a request with valid end of stream signaling. This can be caused by poor network connection and/or client behavior.
            invalid.property: Value [%s] is not a valid property for object [%s]
            constraint.validation: Input parameters do not match the required criteria
            invalid.value: 'Value [%s] is not valid for field type [%s]. Allowable values are: %s'
            limit.reached: Total number, maximum child or maximum depth limit has been reached.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: No authentication bearer token specified in authorization header.
          x-inin-error-codes:
            authentication.required: No authentication bearer token specified in authorization header.
            ip.not.authorized: 'Requests originating from this IP address are not authorized: [%s]'
            bad.credentials: Invalid login credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: You are not authorized to perform the requested action.
          x-inin-error-codes:
            missing.division.permission: Unable to perform the requested action. You are missing the following permission '%s' in the provided division(s).
            app.not.authorized.for.scope: App not authorized to use scope %s
            missing.permissions: 'Unable to perform the requested action. You are missing the following permission(s): %s'
            not.authorized: You are not authorized to perform the requested action.
            missing.any.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s'
            authz.policy.denied: 'Unable to perform the requested action. Your organization''s security policies have denied access. Policy ID(s): [%s]'
            missing.any.division.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s in at least one of the following division(s): %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: The requested resource was not found.
          x-inin-error-codes:
            knowledgebase.not.found: Knowledge Base does not exist
            not.found: The requested resource was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '408':
          description: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          x-inin-error-codes:
            client.timeout: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: The request conflicts with the current state of the target resource.
          x-inin-error-codes:
            request.conflict: The request conflicts with the current state of the target resource.
            already.exists: Category with same name already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '413':
          description: 'The request is over the size limit. Maximum bytes: %s'
          x-inin-error-codes:
            request.entity.too.large: 'The request is over the size limit. Maximum bytes: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '415':
          description: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          x-inin-error-codes:
            unsupported.media.type: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '429':
          description: Rate limit exceeded the maximum. Retry the request in [%s] seconds
          x-inin-error-codes:
            too.many.requests.retry.after: Rate limit exceeded the maximum. Retry the request in [%s] seconds
            too.many.requests: Rate limit exceeded the maximum [%s] requests within [%s] seconds
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: The server encountered an unexpected condition which prevented it from fulfilling the request.
          x-inin-error-codes:
            internal.server.error: The server encountered an unexpected condition which prevented it from fulfilling the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '503':
          description: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          x-inin-error-codes:
            service.unavailable: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '504':
          description: The request timed out.
          x-inin-error-codes:
            authentication.request.timeout: Authentication request timeout.
            request.timeout: The request timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      security:
      - PureCloud OAuth:
        - knowledge
      x-inin-requires-permissions:
        type: ALL
        permissions:
        - knowledge:category:add
      x-purecloud-method-name: postKnowledgeKnowledgebaseCategories
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CategoryCreateRequest'
        required: true
  /api/v2/knowledge/knowledgebases/{knowledgeBaseId}/categories/{categoryId}:
    get:
      tags:
      - Knowledge
      summary: Get category
      description: ''
      operationId: getKnowledgeKnowledgebaseCategory
      parameters:
      - name: knowledgeBaseId
        in: path
        description: Knowledge base ID
        required: true
        schema:
          type: string
      - name: categoryId
        in: path
        description: Category ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryResponse'
        '400':
          description: The request could not be understood by the server due to malformed syntax.
          x-inin-error-codes:
            bad.request: The request could not be understood by the server due to malformed syntax.
            response.entity.too.large: The response is over the size limit. Reduce pageSize or expand list to reduce response size if applicable
            invalid.date: 'Dates must be specified as ISO-8601 strings. For example: yyyy-MM-ddTHH:mm:ss.SSSZ'
            invalid.query.param.value: 'Value [%s] is not valid for parameter [%s]. Allowable values are: %s'
            invalid.property: Value [%s] is not a valid property for object [%s]
            constraint.validation: Input parameters do not match the required criteria
            invalid.value: 'Value [%s] is not valid for field type [%s]. Allowable values are: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: No authentication bearer token specified in authorization header.
          x-inin-error-codes:
            authentication.required: No authentication bearer token specified in authorization header.
            ip.not.authorized: 'Requests originating from this IP address are not authorized: [%s]'
            bad.credentials: Invalid login credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: You are not authorized to perform the requested action.
          x-inin-error-codes:
            missing.division.permission: Unable to perform the requested action. You are missing the following permission '%s' in the provided division(s).
            app.not.authorized.for.scope: App not authorized to use scope %s
            missing.permissions: 'Unable to perform the requested action. You are missing the following permission(s): %s'
            not.authorized: You are not authorized to perform the requested action.
            missing.any.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s'
            authz.policy.denied: 'Unable to perform the requested action. Your organization''s security policies have denied access. Policy ID(s): [%s]'
            missing.any.division.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s in at least one of the following division(s): %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: The requested resource was not found.
          x-inin-error-codes:
            knowledgebase.not.found: Knowledge Base does not exist
            not.found: The requested resource was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '408':
          description: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          x-inin-error-codes:
            client.timeout: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: The request conflicts with the current state of the target resource.
          x-inin-error-codes:
            request.conflict: The request conflicts with the current state of the target resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '413':
          description: 'The request is over the size limit. Maximum bytes: %s'
          x-inin-error-codes:
            request.entity.too.large: 'The request is over the size limit. Maximum bytes: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '415':
          description: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          x-inin-error-codes:
            unsupported.media.type: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '429':
          description: Rate limit exceeded the maximum. Retry the request in [%s] seconds
          x-inin-error-codes:
            too.many.requests.retry.after: Rate limit exceeded the maximum. Retry the request in [%s] seconds
            too.many.requests: Rate limit exceeded the maximum [%s] requests within [%s] seconds
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: The server encountered an unexpected condition which prevented it from fulfilling the request.
          x-inin-error-codes:
            internal.server.error: The server encountered an unexpected condition which prevented it from fulfilling the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '503':
          description: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          x-inin-error-codes:
            service.unavailable: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '504':
          description: The request timed out.
          x-inin-error-codes:
            authentication.request.timeout: Authentication request timeout.
            request.timeout: The request timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      security:
      - PureCloud OAuth:
        - knowledge
        - knowledge:readonly
      x-inin-requires-permissions:
        type: ALL
        permissions:
        - knowledge:category:view
      x-purecloud-method-name: getKnowledgeKnowledgebaseCategory
    delete:
      tags:
      - Knowledge
      summary: Delete category
      description: ''
      operationId: deleteKnowledgeKnowledgebaseCategory
      parameters:
      - name: knowledgeBaseId
        in: path
        description: Knowledge base ID
        required: true
        schema:
          type: string
      - name: categoryId
        in: path
        description: Category ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryResponse'
        '204':
          description: Category deleted
        '400':
          description: The request could not be understood by the server due to malformed syntax.
          x-inin-error-codes:
            bad.request: The request could not be understood by the server due to malformed syntax.
            response.entity.too.large: The response is over the size limit. Reduce pageSize or expand list to reduce response size if applicable
            constraint.validation: Input parameters do not match the required criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: No authentication bearer token specified in authorization header.
          x-inin-error-codes:
            authentication.required: No authentication bearer token specified in authorization header.
            ip.not.authorized: 'Requests originating from this IP address are not authorized: [%s]'
            bad.credentials: Invalid login credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: You are not authorized to perform the requested action.
          x-inin-error-codes:
            missing.division.permission: Unable to perform the requested action. You are missing the following permission '%s' in the provided division(s).
            app.not.authorized.for.scope: App not authorized to use scope %s
            missing.permissions: 'Unable to perform the requested action. You are missing the following permission(s): %s'
            not.authorized: You are not authorized to perform the requested action.
            missing.any.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s'
            authz.policy.denied: 'Unable to perform the requested action. Your organization''s security policies have denied access. Policy ID(s): [%s]'
            missing.any.division.permissions: 'Unable to perform the requested action. You must have at least one of the following permissions assigned: %s in at least one of the following division(s): %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: The requested resource was not found.
          x-inin-error-codes:
            knowledgebase.not.found: Knowledge Base does not exist
            not.found: The requested resource was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '408':
          description: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          x-inin-error-codes:
            client.timeout: The client did not produce a request within the server timeout limit. This can be caused by a slow network connection and/or large payloads.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: The request conflicts with the current state of the target resource.
          x-inin-error-codes:
            request.conflict: The request conflicts with the current state of the target resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '413':
          description: 'The request is over the size limit. Maximum bytes: %s'
          x-inin-error-codes:
            request.entity.too.large: 'The request is over the size limit. Maximum bytes: %s'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '415':
          description: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          x-inin-error-codes:
            unsupported.media.type: Unsupported Media Type - Unsupported or incorrect media type, such as an incorrect Content-Type value in the header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '429':
          description: Rate limit exceeded the maximum. Retry the request in [%s] seconds
          x-inin-error-codes:
            too.many.requests.retry.after: Rate limit exceeded the maximum. Retry the request in [%s] seconds
            too.many.requests: Rate limit exceeded the maximum [%s] requests within [%s] seconds
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: The server encountered an unexpected condition which prevented it from fulfilling the request.
          x-inin-error-codes:
            internal.server.error: The server encountered an unexpected condition which prevented it from fulfilling the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '503':
          description: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          x-inin-error-codes:
            service.unavailable: Service Unavailable - The server is currently unavailable (because it is overloaded or down for maintenance).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '504':
          description: The request timed out.
          x-inin-error-codes:
            authentication.request.timeout: Authentication request timeout.
            request.timeout: The request timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      security:
      - PureCloud OAuth:
        - knowledge
      x-inin-requires-permissions:
        type: ALL
        permissions:
        - knowledge:category:delete
      x-purecloud-method-name: deleteKnowledgeKnowledgebaseCategory
    patch:
      tags:
      - Knowledge
      summary: Update category
      description: ''
      operationId: patchKnowledgeKnowledgebaseCategory
      parameters:
      - name: knowledgeBaseId
        in: path
        description: Knowledge base ID
        required: true
        schema:
          type: string
      - name: categoryId
        in: path


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