> ## 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.

# Get the knowledge source structure

> Returns the knowledge source structure tree. By default, website tree nodes whose `source` URL
matches the parent connector's `sourceConfig.excludePaths` (`fnmatch` patterns) are omitted —
this is the sidebar view. Pass `withExcluded=true` to include those nodes (each website
node then carries `excluded: true|false`); used by the connector configuration view.




## OpenAPI

````yaml https://dev.enneo.dev/api/mind/docs/open-api get /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:
    get:
      tags:
        - Wiki knowledge source structure
      summary: Get the knowledge source structure
      description: >
        Returns the knowledge source structure tree. By default, website tree
        nodes whose `source` URL

        matches the parent connector's `sourceConfig.excludePaths` (`fnmatch`
        patterns) are omitted —

        this is the sidebar view. Pass `withExcluded=true` to include those
        nodes (each website

        node then carries `excluded: true|false`); used by the connector
        configuration view.
      operationId: getKnowledgeSourceStructure
      parameters:
        - name: withExcluded
          in: query
          required: false
          description: >
            When true, include website tree nodes whose source matches the
            parent connector's

            excludePaths and tag each website node with `excluded: true|false`.
            When false (default)

            or omitted, those nodes are dropped from the response. Truthy
            values: `true`, `1`, `yes`, `on`.
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Successful operation
          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

````