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

# Create a datasource (settings)

> Creates a new datasource catalog entry via the resource-scoped settings pattern.
The creator becomes the default owner. Built-in origin cannot be set via API.




## OpenAPI

````yaml /api-reference/openapi.json post /settings/datasources
openapi: 3.0.3
info:
  title: Findable API
  version: 3.2.38
  description: >
    REST API for the Findable AI Assistant platform.


    ## Authentication


    All endpoints (except `/server/setup` and `/server/bootstrap`) require a
    valid **Azure AD / Entra ID Bearer token**.


    ### Obtaining a token


    1. Register (or reuse) an **App Registration** in Azure Entra ID for your
    client.

    2. Under **API Permissions**, add a delegated permission for the Findable
    server app:
       `api://<SERVER_CLIENT_ID>/User.Read`
    3. Acquire a token using MSAL (or any OAuth 2.0 library) with the following
    parameters:


    | Parameter | Value |

    |-----------|-------|

    | Authority | `https://login.microsoftonline.com/<TENANT_ID>` |

    | Client ID | Your client app registration ID |

    | Scope | `api://<SERVER_CLIENT_ID>/User.Read` |

    | Grant type | Authorization Code (interactive) or Client Credentials
    (daemon) |


    ### Example (MSAL Node.js)


    ```javascript

    const { ConfidentialClientApplication } = require("@azure/msal-node");


    const cca = new ConfidentialClientApplication({
      auth: {
        clientId: "<YOUR_CLIENT_ID>",
        authority: "https://login.microsoftonline.com/<TENANT_ID>",
        clientSecret: "<YOUR_CLIENT_SECRET>",
      },
    });


    const result = await cca.acquireTokenByClientCredential({
      scopes: ["api://<SERVER_CLIENT_ID>/.default"],
    });


    // Use result.accessToken in the Authorization header

    ```


    ### Using the token


    Include the token in every request:

    ```

    Authorization: Bearer <access_token>

    ```


    ### Roles


    Access is determined by Azure AD group membership configured in the
    application settings:

    - **Admin (Owner)**: Full access to all endpoints including admin operations

    - **Contributor**: Can create and manage chats, files, and content

    - **User**: Read access to entitled chats and resources
  contact:
    name: Findable Support
  license:
    name: Proprietary
servers:
  - url: /server
    description: Application server (relative)
security:
  - BearerAuth: []
tags:
  - name: AI
    description: Chat completion and AI generation endpoints
  - name: Chats
    description: Chat configuration CRUD with ACL enforcement
  - name: Settings
    description: Application settings and health
  - name: Files
    description: Blob storage file operations
  - name: Search
    description: Azure AI Search resource management
  - name: User
    description: User profile, feedback, chat logs, and preferences
  - name: Flows
    description: FlowEngine flow designer operations
  - name: Prompts
    description: Prompt template management
  - name: Pages
    description: Navigation page management
  - name: Admin
    description: Administrative operations (admin-only)
  - name: Bootstrap
    description: Bootstrap seed data operations (admin-only)
  - name: Setup
    description: Initial application setup (pre-auth)
  - name: Cosmos
    description: Generic Cosmos DB CRUD operations
  - name: Tools
    description: Tool providers, web search, and utility tools
  - name: MCP
    description: Model Context Protocol server management
  - name: Telemetry
    description: Version, health, and API permission checks
  - name: SharePoint
    description: SharePoint entitlement management
  - name: Data Platform
    description: Data platform connection management
  - name: Vector Stores
    description: Vector store provider operations
  - name: OneDrive
    description: OneDrive personal file storage operations
  - name: Jobs
    description: Background job and scheduler management
  - name: Memory
    description: User and organizational memory operations
  - name: Slack
    description: >-
      Slack bot interactions and webhooks (public, uses Slack signature
      verification)
  - name: Teams
    description: Microsoft Teams bot webhooks and interactions
  - name: Human Input
    description: Human-in-the-loop input requests for flow executions
  - name: Datasources
    description: Datasource catalog CRUD with ACL enforcement
  - name: Assignments
    description: >-
      Assignment lifecycle: inbox, sent, create, launch, complete, delegate,
      reject, reassign, remind, and recurring schedules. Experimental feature —
      requires experimental flag enabled.
paths:
  /settings/datasources:
    post:
      tags:
        - Datasources
      summary: Create a datasource (settings)
      description: >
        Creates a new datasource catalog entry via the resource-scoped settings
        pattern.

        The creator becomes the default owner. Built-in origin cannot be set via
        API.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataSourceCatalog'
      responses:
        '201':
          description: Datasource created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSourceCatalog'
        '403':
          description: Insufficient permissions
components:
  schemas:
    DataSourceCatalog:
      type: object
      properties:
        scope:
          description: Access control model
          type: string
          enum:
            - personal
            - shared
        createdBy:
          description: UPN of the creator
          type: string
        isPublic:
          description: Allow public read access
          type: boolean
        owners:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                minLength: 1
              type:
                type: string
                enum:
                  - group
                  - user
              displayName:
                type: string
              mail:
                type: string
              securityEnabled:
                type: boolean
              mailEnabled:
                type: boolean
              groupTypes:
                nullable: true
                type: array
                items:
                  type: string
              groupType:
                type: string
              userPrincipalName:
                type: string
              jobTitle:
                type: string
              department:
                type: string
              officeLocation:
                type: string
            required:
              - id
              - type
            additionalProperties: {}
        contributors:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                minLength: 1
              type:
                type: string
                enum:
                  - group
                  - user
              displayName:
                type: string
              mail:
                type: string
              securityEnabled:
                type: boolean
              mailEnabled:
                type: boolean
              groupTypes:
                nullable: true
                type: array
                items:
                  type: string
              groupType:
                type: string
              userPrincipalName:
                type: string
              jobTitle:
                type: string
              department:
                type: string
              officeLocation:
                type: string
            required:
              - id
              - type
            additionalProperties: {}
        users:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                minLength: 1
              type:
                type: string
                enum:
                  - group
                  - user
              displayName:
                type: string
              mail:
                type: string
              securityEnabled:
                type: boolean
              mailEnabled:
                type: boolean
              groupTypes:
                nullable: true
                type: array
                items:
                  type: string
              groupType:
                type: string
              userPrincipalName:
                type: string
              jobTitle:
                type: string
              department:
                type: string
              officeLocation:
                type: string
            required:
              - id
              - type
            additionalProperties: {}
        inheritEntitlements:
          anyOf:
            - type: boolean
            - type: object
              properties:
                owners:
                  type: boolean
                contributors:
                  type: boolean
                users:
                  type: boolean
              additionalProperties: false
        hideFromCatalog:
          description: >-
            Hide entity from user-facing recommendations and catalog/search
            surfaces (still accessible to owners/contributors/admins)
          type: boolean
        createdAt:
          description: ISO-8601 creation timestamp
          type: string
        updatedBy:
          type: string
        updatedAt:
          description: ISO-8601 update timestamp
          type: string
        id:
          type: string
          description: Datasource ID (UUID)
        name:
          type: string
          description: Display name
        description:
          description: Human-readable description
          type: string
        type:
          description: >-
            DATASOURCE_TYPE — determines storage, indexing, and retrieval
            behaviour
          type: string
          enum:
            - shared
            - personal
            - workspace
            - sharepoint
            - websearch
            - llmknowledge
            - flowretriever
            - vectorretriever
        origin:
          type: string
          enum:
            - builtIn
            - admin
          description: Who created/manages this entry (builtIn = locked, admin = full CRUD)
        indexName:
          description: Azure Search index name
          type: string
        searchEndpoint:
          description: Search endpoint ID
          type: string
        selectedFolder:
          description: Blob folder name for file-backed sources
          type: string
        sharePointSite:
          description: Selected SharePoint site
          type: object
          additionalProperties: {}
        sharePointLibrary:
          description: Single library (legacy)
          nullable: true
          type: object
          additionalProperties: {}
        sharePointLibraries:
          description: Multiple libraries selection
          type: array
          items:
            type: object
            additionalProperties: {}
        sharePointIndexEntireSite:
          description: Index all libraries in the selected site
          type: boolean
        sharePointFolder:
          description: Subfolder within library
          nullable: true
          type: object
          additionalProperties: {}
        flowId:
          description: FK to IFlowDesignerFlow (when type === flowretriever)
          type: string
        flowParams:
          description: Pre-configured inputs for the retriever flow
          type: object
          additionalProperties: {}
        lockedFlowParams:
          description: Variable names locked from end-user override
          type: array
          items:
            type: string
        hiddenFlowParams:
          description: Variable names hidden from end users
          type: array
          items:
            type: string
        vectorConnectionId:
          description: FK to IDataConnection (vector store connection)
          type: string
        vectorTopK:
          description: Number of results (default 5)
          type: integer
        vectorSearchType:
          description: Search strategy for vector store
          type: string
          enum:
            - vector
            - semantic
            - hybrid
            - keyword
        vectorMinScore:
          description: Minimum similarity score (0-1)
          type: number
        webSearch:
          description: Web Search source configuration (when type === websearch)
          type: object
          properties:
            provider:
              description: 'Provider ID: tavily, brave, perplexity, exa, serpapi'
              type: string
            config:
              description: Web search provider configuration
              type: object
              properties:
                maxResults:
                  type: integer
                searchDepth:
                  type: string
                  enum:
                    - basic
                    - advanced
                includeAnswer:
                  type: boolean
                includeDomains:
                  type: array
                  items:
                    type: string
                excludeDomains:
                  type: array
                  items:
                    type: string
                pinnedUrls:
                  type: array
                  items:
                    type: string
              additionalProperties: false
            allowUserPinnedUrlEdit:
              description: End users can add/remove pinned URLs
              type: boolean
            allowUserIncludeDomainEdit:
              description: End users can add/remove allowed domains
              type: boolean
            allowUserExcludeDomainEdit:
              description: End users can add/remove excluded domains
              type: boolean
          additionalProperties: false
        defaultEnabled:
          description: Whether enabled by default for new chats
          type: boolean
        defaultWeight:
          description: Result weighting 0.0-1.0
          type: number
        defaultMaxResults:
          description: Default max docs from this source
          type: integer
        defaultAllowUserToggle:
          description: Whether end users can toggle at runtime
          type: boolean
        isEnabled:
          description: 'Whether this datasource is enabled and available (default: true)'
          type: boolean
        tags:
          type: array
          items:
            type: string
        sort:
          description: Display order
          type: integer
        lifecycle:
          description: Entity lifecycle state
          type: string
        parentChatId:
          description: When set, owned by a specific chat (cleaned up on chat delete)
          type: string
      required:
        - id
        - name
        - type
        - origin
      additionalProperties: false
      title: DataSourceCatalog
      description: First-class datasource catalog entity with ACL support
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Azure AD access token obtained via MSAL

````