AppDirect Data Sources API

Manage knowledge bases and data sources for AI assistants

Operations 21

GET /api/v1/ai/{aiId}/data-sources List data sources for the AI #
POST /api/v1/ai/{aiId}/data-sources Add an existing data source to the specified AI #
DELETE /api/v1/ai/{aiId}/data-sources Delete all data sources from the AI #
POST /api/v1/ai/{aiId}/data-sources/api Create a new API data source for the specified AI #
POST /api/v1/ai/{aiId}/data-sources/file Adds a file upload data source for the specified AI. Max file size: 4.5Mb.
POST /api/v1/ai/{aiId}/data-sources/file-blob Initialize a file-blob upload for the AI #
POST /api/v1/ai/{aiId}/data-sources/web-urls Create a web URL data source for the AI #
POST /api/v1/ai/{aiId}/data-sources/google-drive Create Google Drive data sources for the AI #
POST /api/v1/ai/{aiId}/data-sources/onedrive Create a OneDrive data source for the AI #
POST /api/v1/ai/{aiId}/data-sources/confluence Create a Confluence data source for the AI #
POST /api/v1/ai/{aiId}/data-sources/jira Create a Jira data source for the AI #
POST /api/v1/ai/{aiId}/data-sources/github Create a GitHub data source for the AI #
DELETE /api/v1/ai/{aiId}/data-sources/{dataSourceId} Remove a data source from the AI #
POST /api/v1/ai/{aiId}/data-sources/delete Delete multiple data sources from the AI #
GET /api/v1/data-sources List all data sources #
PATCH /api/v1/data-sources/{dataSourceId} Update a Data Source #
DELETE /api/v1/data-sources/{dataSourceId} Delete a Data Source #
PUT /api/v1/data-sources/{dataSourceId}/refresh Refresh a Data Source #
GET /api/v1/data-sources/{dataSourceId}/stats Get data source stats #
GET /api/v1/data-sources/{dataSourceId}/knowledge List knowledge items for a data source #
PATCH /api/v1/data-sources/{dataSourceId}/knowledge/{knowledgeId} Update a knowledge item #

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/appdirect-data-sources-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

appdirect-data-sources-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: The Companies API allows developers to manage marketplace companies and their user memberships.
  title: Companies AI Embed Data Sources API
  license:
    name: Apache License, Version 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0
  version: v296.0-SNAPSHOT
servers:
- url: https://marketplace.appdirect.com/api
- url: https://virtserver.swaggerhub.com
tags:
- name: Data Sources
  description: Manage knowledge bases and data sources for AI assistants
paths:
  /api/v1/ai/{aiId}/data-sources:
    get:
      tags:
      - Data Sources
      summary: List data sources for the AI
      description: Retrieves a list of data sources associated with the given AI identifier.
      operationId: listAIDataSources
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the AI whose data sources are to be retrieved.
        schema:
          type: string
      responses:
        '200':
          description: A list of data sources associated with the AI.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListDataSourcesResponse'
        '404':
          description: AI not found with the given identifier.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
    post:
      tags:
      - Data Sources
      summary: Add an existing data source to the specified AI
      description: Associates an existing data source with the specified AI.
      operationId: addDataSourceToAI
      parameters:
      - name: aiId
        in: path
        required: true
        description: The unique identifier for the AI to which the data source is to be added.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                dataSourceId:
                  type: string
                  description: The unique identifier of the existing data source to be added.
              required:
              - dataSourceId
      responses:
        '201':
          description: Data source successfully added to the AI.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAIDataSourceResponse'
        '400':
          description: Bad request, malformed request syntax or invalid request message framing.
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: Not Found, either of the specified AI or data source are not found.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
    delete:
      tags:
      - Data Sources
      summary: Delete all data sources from the AI
      description: Requests deletion of all data sources associated with the specified AI.
      operationId: deleteAllAIDataSources
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the AI whose data sources are to be deleted.
        schema:
          type: string
      responses:
        '204':
          description: Delete request accepted.
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: AI not found with the given identifier.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/data-sources/api:
    post:
      tags:
      - Data Sources
      summary: Create a new API data source for the specified AI
      description: Adds a new API data source with a specified name and JSON payload for the given AI.
      operationId: createApiDataSource
      parameters:
      - name: aiId
        in: path
        required: true
        description: The unique identifier for the AI.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the data source.
                data:
                  type: object
                  description: The JSON payload to be used as the data source's knowledge.
              required:
              - name
              - data
      responses:
        '201':
          description: Data source successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSource'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: AI not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/data-sources/file:
    post:
      tags:
      - Data Sources
      summary: 'Adds a file upload data source for the specified AI. Max file size: 4.5Mb.'
      parameters:
      - in: path
        name: aiId
        required: true
        schema:
          type: string
        description: The unique identifier for the AI.
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '201':
          description: File uploaded successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSource'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: AI not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/data-sources/file-blob:
    post:
      tags:
      - Data Sources
      summary: Initialize a file-blob upload for the AI
      description: Generates a signed upload token for Vercel Blob and creates the data source after upload.
      operationId: createFileBlobDataSource
      parameters:
      - in: path
        name: aiId
        required: true
        schema:
          type: string
        description: The unique identifier for the AI.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: Upload token created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VercelBlobUploadResponse'
        '400':
          description: Bad request
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/data-sources/web-urls:
    post:
      tags:
      - Data Sources
      summary: Create a web URL data source for the AI
      description: Creates a web URL knowledge source and associates it with the AI.
      operationId: createWebUrlDataSource
      parameters:
      - in: path
        name: aiId
        required: true
        schema:
          type: string
        description: The unique identifier for the AI.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebUrlDataSourceInput'
      responses:
        '201':
          description: Data source created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSource'
        '403':
          description: Forbidden - web URL data source requires a paid plan.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/data-sources/google-drive:
    post:
      tags:
      - Data Sources
      summary: Create Google Drive data sources for the AI
      description: Creates Google Drive knowledge sources and associates them with the AI.
      operationId: createGoogleDriveDataSources
      parameters:
      - in: path
        name: aiId
        required: true
        schema:
          type: string
        description: The unique identifier for the AI.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateGoogleDriveKnowledgeRequest'
      responses:
        '201':
          description: Data sources created.
        '400':
          description: Bad request
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/data-sources/onedrive:
    post:
      tags:
      - Data Sources
      summary: Create a OneDrive data source for the AI
      description: Creates a OneDrive knowledge source and associates it with the AI.
      operationId: createOneDriveDataSource
      parameters:
      - in: path
        name: aiId
        required: true
        schema:
          type: string
        description: The unique identifier for the AI.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOneDriveKnowledgeRequest'
      responses:
        '201':
          description: Data source created.
        '400':
          description: Bad request
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/data-sources/confluence:
    post:
      tags:
      - Data Sources
      summary: Create a Confluence data source for the AI
      description: Creates a Confluence knowledge source and associates it with the AI.
      operationId: createConfluenceDataSource
      parameters:
      - in: path
        name: aiId
        required: true
        schema:
          type: string
        description: The unique identifier for the AI.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateConfluenceKnowledgeRequest'
      responses:
        '201':
          description: Data source created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSource'
        '403':
          description: Forbidden - Confluence data source requires a paid plan.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/data-sources/jira:
    post:
      tags:
      - Data Sources
      summary: Create a Jira data source for the AI
      description: Creates a Jira knowledge source and associates it with the AI.
      operationId: createJiraDataSource
      parameters:
      - in: path
        name: aiId
        required: true
        schema:
          type: string
        description: The unique identifier for the AI.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateJiraKnowledgeRequest'
      responses:
        '201':
          description: Data source created.
        '403':
          description: Forbidden - Jira data source requires a paid plan.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/data-sources/github:
    post:
      tags:
      - Data Sources
      summary: Create a GitHub data source for the AI
      description: Creates a GitHub knowledge source and associates it with the AI.
      operationId: createGithubDataSource
      parameters:
      - in: path
        name: aiId
        required: true
        schema:
          type: string
        description: The unique identifier for the AI.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateGithubKnowledgeRequest'
      responses:
        '201':
          description: Data source created.
        '403':
          description: Forbidden - GitHub data source requires a paid plan.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/data-sources/{dataSourceId}:
    delete:
      tags:
      - Data Sources
      summary: Remove a data source from the AI
      description: Removes the specified data source from the AI.
      operationId: removeAIDataSource
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the AI.
        schema:
          type: string
      - name: dataSourceId
        in: path
        required: true
        description: The identifier of the data source to remove.
        schema:
          type: string
      responses:
        '204':
          description: Data source removed.
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: AI or data source not found.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/data-sources/delete:
    post:
      tags:
      - Data Sources
      summary: Delete multiple data sources from the AI
      description: Bulk delete data sources by ID for the specified AI.
      operationId: deleteAIDataSources
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the AI.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteAIDataSourcesRequest'
      responses:
        '204':
          description: Delete request accepted.
        '400':
          description: Bad request
        '403':
          description: Forbidden, the user is not authorized to perform this action.
      security:
      - ApiKeyAuth: []
  /api/v1/data-sources:
    get:
      tags:
      - Data Sources
      summary: List all data sources
      description: Retrieves a list of data sources associated which the user has access to.
      operationId: listDataSources
      parameters:
      - name: search
        in: query
        required: false
        description: Search term for data sources.
        schema:
          type: string
      - name: type
        in: query
        required: false
        description: Filter by data source type.
        schema:
          $ref: '#/components/schemas/DataSourceType'
      - name: orderBy
        in: query
        required: false
        description: 'Order by field and direction. Prefix field name with ''+'' for ascending or ''-'' for descending order. Allowed fields: createdAt, lastIndexedAt, usageCount.'
        schema:
          type: string
          pattern: ^[+-](createdAt|lastIndexedAt|usageCount)$
      - name: page
        in: query
        required: false
        description: Page number for paginated results.
        schema:
          type: integer
      responses:
        '200':
          description: A list of all data sources which the user has access to.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedDataSourceWithAiDetailsResponse'
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/data-sources/{dataSourceId}:
    patch:
      tags:
      - Data Sources
      summary: Update a Data Source
      description: Updates properties for the specified data source.
      operationId: updateDataSource
      parameters:
      - name: dataSourceId
        in: path
        required: true
        description: The unique identifier of the data source to update.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDataSourceRequest'
      responses:
        '200':
          description: Data source updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSource'
        '400':
          description: Bad request
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: Not Found, the specified data source ID does not exist.
      security:
      - ApiKeyAuth: []
    delete:
      tags:
      - Data Sources
      summary: Delete a Data Source
      description: Deletes a specific data source associated with the given AI identifier.
      operationId: deleteDataSource
      parameters:
      - name: dataSourceId
        in: path
        required: true
        description: The unique identifier of the data source to be deleted.
        schema:
          type: string
      responses:
        '204':
          description: Data source successfully deleted, no content to return.
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: Not Found, the specified data source ID does not exist.
      security:
      - ApiKeyAuth: []
  /api/v1/data-sources/{dataSourceId}/refresh:
    put:
      tags:
      - Data Sources
      summary: Refresh a Data Source
      description: This endpoint refreshes the specified data source.
      operationId: refreshDataSource
      parameters:
      - name: dataSourceId
        in: path
        required: true
        description: The unique identifier of the data source to be refreshed.
        schema:
          type: string
      - in: query
        name: forceRefresh
        description: Indicates if the data source should be refreshed even if the content has not been updated
        schema:
          type: boolean
      responses:
        '202':
          description: Request has been accepted for processing.
        '401':
          description: Missing authorization context. User must be authenticated.
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: Data source not found with the specified ID.
      security:
      - ApiKeyAuth: []
  /api/v1/data-sources/{dataSourceId}/stats:
    get:
      tags:
      - Data Sources
      summary: Get data source stats
      description: Retrieves indexing statistics for the specified data source.
      operationId: getDataSourceStats
      parameters:
      - name: dataSourceId
        in: path
        required: true
        description: The unique identifier of the data source.
        schema:
          type: string
      responses:
        '200':
          description: Data source stats.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSourceKnowledgeStats'
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: Data source not found.
      security:
      - ApiKeyAuth: []
  /api/v1/data-sources/{dataSourceId}/knowledge:
    get:
      tags:
      - Data Sources
      summary: List knowledge items for a data source
      description: Retrieves paginated knowledge items for the specified data source.
      operationId: listDataSourceKnowledge
      parameters:
      - name: dataSourceId
        in: path
        required: true
        description: The unique identifier of the data source.
        schema:
          type: string
      - name: first
        in: query
        required: false
        description: Number of items to return.
        schema:
          type: integer
      - name: cursor
        in: query
        required: false
        description: Cursor for pagination.
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: Page number for pagination.
        schema:
          type: integer
      responses:
        '200':
          description: Paginated knowledge results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetKnowledgeResponse'
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: Data source not found.
      security:
      - ApiKeyAuth: []
  /api/v1/data-sources/{dataSourceId}/knowledge/{knowledgeId}:
    patch:
      tags:
      - Data Sources
      summary: Update a knowledge item
      description: Updates a knowledge item for the specified data source.
      operationId: updateKnowledgeItem
      parameters:
      - name: dataSourceId
        in: path
        required: true
        description: The unique identifier of the data source.
        schema:
          type: string
      - name: knowledgeId
        in: path
        required: true
        description: The identifier of the knowledge item.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateKnowledgeRequest'
      responses:
        '200':
          description: Knowledge item updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Knowledge'
        '400':
          description: Bad request
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: Data source or knowledge item not found.
      security:
      - ApiKeyAuth: []
components:
  schemas:
    UserSummary:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
        name:
          type:
          - string
          - 'null'
    WebUrlFileType:
      type: string
      enum:
      - TEXT
      - CSV
      - PDF
      - MARKDOWN
      - DOC
      - XLS
    VercelBlobUploadResponse:
      type: object
      properties:
        url:
          type: string
        pathname:
          type: string
        contentType:
          type: string
        size:
          type: integer
      additionalProperties: true
    Knowledge:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          $ref: '#/components/schemas/DataSourceType'
        uniqueId:
          type:
          - string
          - 'null'
        parentUniqueId:
          type:
          - string
          - 'null'
        indexStatus:
          $ref: '#/components/schemas/KnowledgeIndexStatus'
        documentCount:
          type:
          - integer
          - 'null'
        tokenCount:
          type:
          - integer
          - 'null'
        originalContent:
          $ref: '#/components/schemas/KnowledgeOriginalContent'
        documentsBlobUrl:
          type:
          - string
          - 'null'
        indexPercentage:
          type: string
        metadata:
          type:
          - object
          - 'null'
        isBlobStorageDeleted:
          type: boolean
        cite:
          type: boolean
    AIReference:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        src:
          type: string
    GetKnowledgeResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Knowledge'
        pagination:
          type: object
          properties:
            nextCursor:
              type: string
    Error:
      type: object
      properties:
        error:
          type: string
    CreateJiraKnowledgeRequest:
      type: object
      properties:
        oauthTokenId:
          type: string
        projectName:
          type: string
        projectKey:
          type: string
        dataRefreshPeriod:
          $ref: '#/components/schemas/DataSourceRefreshPeriod'
      required:
      - oauthTokenId
      - projectName
      - projectKey
    ListDataSourcesResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/DataSource'
    DataSourceType:
      type: string
      description: The type of the data source.
      enum:
      - API
      - FILE_UPLOAD
      - GOOGLE_DRIVE
      - ONEDRIVE
      - WEB_URL
      - CONFLUENCE
      - JIRA
      - GITHUB
    CreateOneDriveKnowledgeRequest:
      type: object
      properties:
        oauthTokenId:
          type: string
        fileId:
          type: string
        filename:
          type: string
        dataRefreshPeriod:
          $ref: '#/components/schemas/DataSourceRefreshPeriod'
      required:
      - oauthTokenId
      - fileId
      - filename
    DataSourceKnowledgeStats:
      type: object
      properties:
        doneCount:
          type: integer
        failedCount:
          type: integer
        pendingCount:
          type: integer
        indexingCount:
          type: integer
        totalCount:
          type: integer
    CreateConfluenceKnowledgeRequest:
      type: object
      properties:
        oauthTokenId:
          type: string
        pageId:
          type: string
        pageName:
          type: string
        contentType:
          type: string
        spaceId:
          type: string
        dataRefreshPeriod:
          $ref: '#/components/schemas/DataSourceRefreshPeriod'
        indexChildPages:
          type: boolean
        indexDriveFiles:
          type: boolean
        indexAttachments:
          type: boolean
        selectedDriveAccount:
          type: string
        archive:
          type: boolean
        allSpaces:
          type: boolean
      required:
      - oauthTokenId
      - pageName
    DeleteAIDataSourcesRequest:
      type: object
      properties:
        dataSourceIds:
          type: array
          items:
            type: string
      required:
      - dataSourceIds
    DataSource:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the data source.
        createdAt:
          type: string
          format: date-time
          description: The date and time when the data source was created.
        updatedAt:
          type: string
          format: date-time
          description: The date and time when the data source was last updated.
        lastIndexedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: The date and time when the data source was last indexed, if applicable.
        orgId:
          type: string
          description: Organization ID that owns the data source.
        ownerUserId:
          type: string
          description: User ID that created the data source.
        name:
          type: string
          description: Name of the data source.
        type:
          $ref: '#/components/schemas/DataSourceType'
        refreshPeriod:
          $ref: '#/components/schemas/DataSourceRefreshPeriod'
        indexStatus:
          $ref: '#/components/schemas/DataSourceIndexStatus'
        indexPercentage:
          type: string
          description: Percentage of the indexing process completed, if applicable.
        data:
          type:
          - object
          - 'null'
          description: Provider-specific data source configuration.
        cite:
          type: boolean
          description: Whether this data source should be cited in responses.
        orgVisible:
          type: boolean
          description: Whether this data source is visible to the organization.
    UpdateDataSourceRequest:
      type: object
      properties:
        refreshPeriod:
          $ref: '#/components/schemas/DataSourceRefreshPeriod'
        cite:
          type:
          - boolean
          - 'null'
        ais:
          type: array
          items:
            type: string
        orgVisible:
          type:
          - boolean
          - 'null'
    KnowledgeOriginalContent:
      type: object
      properties:
        contentBlobUrl:
          type: string
        filename:
          type: string
        mimeType:
          type: string
        isContentStoredExternally:
          type: boolean
        contentUrl:
          type: string
    GoogleDriveFile:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    PaginatedDataSourceWithAiDetailsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/DataSourceWithAiDetails'
        total:
          type: integer
    DataSourceWithAiDetails:
      allOf:
      - $ref: '#/components/schemas/DataSource'
      - type: object
        properties:
          ais:
            type: array
            items:
              $ref: '#/components/schemas/AIReference'
          ownerUser:
            $ref: '#/components/schemas/UserSummary'
    DataSourceRefreshPeriod:
      type: string
      description: How frequently the data source should be refreshed.
      enum:
      - NEVER
      - DAILY
      - WEEKLY
      - MONTHLY
    KnowledgeIndexStatus:
      type: string
      enum:
      - INITIALIZED
      - RETRIEVING_CONTENT
      - CONTENT_RETRIEVED
      - DOCUMENTS_CREATED
      - INDEXING
      - PARTIALLY_COMPLETED
      - COMPLETED
      - FAILED
      - DELETED
    DataSourceIndexStatus:
      type: string
      description: The indexing status of the data source.
      enum:
      - INITIALIZED
      - INDEXING
      - REFRESHING
      - PARTIALLY_COMPLETED
      - COMPLETED
      - FAILED
      - DELETION_REQUESTED
      - DELETED
      - MISSING
    CreateGithubKnowledgeRequest:
      type: object
      properties:
        mode:
          type: string
          enum:
          - repos
          - all
        gitHubAppInstallationId:
          type: integer
        repos:
          type: array
          items:
            type: string
        dataRefreshPeriod:
          $ref: '#/components/schemas/DataSourceRefreshPeriod'
      required:
      - mode
      - gitHubAppInstallationId
    CreateAIDataSourceResponse:
      type: object
      properties:
        aiId:
          type: string
        dataSourceId:
          type: string
      required:
      - aiId
      - dataSourceId
    WebUrlDataSourceInput:
      type: object
      properties:
        url:
          type: string
        dataRefreshPeriod:
          $ref: '#/components/schemas/DataSourceRefreshPeriod'
        includeFiles:
          type: boolean
        includedFileTypes:
          type: array
          items:
            $ref: '#/components/schemas/WebUrlFileType'
        includeUrlGlobs:
          type: array
          items:
            type: string
        excludeUrlGlobs:
          type: array
          items:
            type: string
        maxPages:
          type: integer
        maxMemory:
          type: integer
        timeout:
          type: integer
      required:
      - url
      - dataRefreshPeriod
      - includeFiles
      - includedFileTypes
    CreateGoogleDriveKnowledgeRequest:
      type: object
      properties:
        oauthTokenId:
          type: string
        files:
          type: array
          items:
            $ref: '#/components/schemas/GoogleDriveFile'
        dataRefreshPeriod:
          $ref: '#/components/schemas/DataSourceRefreshPeriod'
      required:
      - files
    UpdateKnowledgeRequest:
      type: object
      properties:
        cite:
          type: boolean
      required:
      - cite