> ## Documentation Index
> Fetch the complete documentation index at: https://docs.enneo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a new knowledge source structure



## OpenAPI

````yaml https://dev.enneo.dev/api/mind/docs/open-api post /knowledgeSourceStructure
openapi: 3.0.0
info:
  version: '1'
  title: enneo.MIND API
  description: This describes the API of enneo Mind, the main ticketing backend
  contact:
    name: enneo GmbH
    email: richard@enneo.ai
  license:
    name: Proprietary software
    url: https://enneo.ai
servers:
  - url: https://demo.enneo.ai/api/mind
    description: Production server, demo client
  - url: https://main.enneo.dev/api/mind
    description: Development main branch
  - url: http://localhost:8005/api/mind
    description: Local development server
security:
  - bearerAuth:
      - api
  - cookieAuth:
      - api
paths:
  /knowledgeSourceStructure:
    post:
      tags:
        - Wiki knowledge source structure
      summary: Create a new knowledge source structure
      operationId: createKnowledgeSourceStructure
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/knowledgeSourceStructure'
      responses:
        '200':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/knowledgeSourceStructure'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    knowledgeSourceStructure:
      type: array
      items:
        type: object
        properties:
          id:
            type: integer
            description: The unique identifier of the knowledge source structur
            nullable: false
            example: 1
          name:
            type: string
            description: The name of the knowledge source structure
            example: Fragen
            nullable: false
          type:
            type: string
            description: The type of the knowledge source structure
            example: faq
            nullable: true
          description:
            type: string
            description: The description of the knowledge source structure
            example: Allgemeine Fragen
            nullable: true
          parent:
            type: integer
            description: The parent id of the knowledge source structure
            example: 0
          articleId:
            type: integer
            description: >
              For website-type nodes only — the id of one representative
              knowledge_sources page under this

              structure node, used by the FE to build the article navigation
              link.
          source:
            type: string
            description: >-
              For website-type nodes only — the source URL of the representative
              page.
          excluded:
            type: boolean
            description: >
              For website-type nodes only, present only when
              `?withExcluded=true` was passed.

              True if the node's source URL matches the parent connector's
              `sourceConfig.excludePaths`.
          teams:
            type: array
            items:
              type: integer
            description: >
              Team IDs that may access this structure node. Empty array means
              the node is

              unrestricted (visible to everyone). When non-empty, only users
              whose

              `actualTeamIds` intersect with this list can see the node and its
              descendants.
            example:
              - 1
              - 5
          access:
            $ref: '#/components/schemas/KnowledgeSourceAccess'
          children:
            type: array
            items:
              type: object
              properties:
                id:
                  type: integer
                  description: The unique identifier of the knowledge source structure
                  nullable: false
                  example: 2
                name:
                  type: string
                  description: The name of the knowledge source structure
                  example: Allgemeine Fragen
                  nullable: false
                parent:
                  type: integer
                  description: The parent id of the knowledge source structure
                  example: 1
                teams:
                  type: array
                  items:
                    type: integer
                  description: >-
                    Team IDs that may access this structure node. Empty array
                    means unrestricted.
                  example: []
                access:
                  $ref: '#/components/schemas/KnowledgeSourceAccess'
                children:
                  type: array
                  items:
                    type: object
    Error:
      type: object
      description: Data format of Enneo error messages
      properties:
        error:
          type: string
          example: Contract 121 could not be processed
          description: Readable error message that should be shown to the user
        details:
          type: string
          example: >-
            Uncatched null point exception in testFunction() in
            /app/src/file:212
          description: Not easily readable error message that is for the developer
        txId:
          type: string
          example: c916167c94
          description: >-
            Internal transaction id. Useful for debugging. Corresponds to the
            OpenTelemetry trace ID.
    KnowledgeSourceAccess:
      type: object
      description: >
        Team-ACL "access hole" indicator. Present only when this node has a
        problem or contains one;

        omitted entirely when the node is clean. A hole = the node declares
        team(s) that an ancestor

        folder forbids — because visibility is narrowing-only (reachable only by
        users who pass every

        restricted ancestor AND the node's own restriction), the access the
        editor granted does not

        actually work. To learn what is wrong, open the item and read its real
        `teams`.
      properties:
        blocked:
          type: boolean
          description: >
            True when THIS node's own teams are partly or fully cut by an
            ancestor folder. Present only

            when true (omitted otherwise).
          example: true
        blockedItems:
          type: array
          description: >
            Direct children that are blocked or contain a blocked descendant — a
            one-level breadcrumb:

            follow it down to the next level until you reach the node with
            `blocked: true`. Present only

            when non-empty. Detection is user-independent, so a problem hidden
            from the caller by ACL

            still surfaces here as `{id, kind}` (only id/kind leak — never the
            gated content).
          items:
            type: object
            properties:
              id:
                type: integer
                example: 42
              kind:
                type: string
                enum:
                  - folder
                  - article
                example: article
          example:
            - id: 42
              kind: article
            - id: 57
              kind: folder
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT-based authentication
      x-scopes:
        api: Full access to the API
    cookieAuth:
      type: apiKey
      in: cookie
      name: connect.sid
      description: Cookie-based authentication
      x-scopes:
        api: Full access to the API

````