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

# Get a tap configuration

> Returns a single tap configuration, including the script content from MinIO.



## OpenAPI

````yaml /openapi.yaml get /api/v1/tap
openapi: 3.0.3
info:
  title: Datris API
  description: >
    REST API for the Datris AI Data Platform. Ingest, validate, transform,
    store, and retrieve data.


    For AI agent integration, use the [MCP
    Server](https://docs.datris.ai/mcp-server) instead.
  version: 1.0.0
  contact:
    name: Datris
    url: https://datris.ai
  license:
    name: Apache 2.0
servers:
  - url: http://localhost:8080
    description: Local development
security:
  - ApiKeyAuth: []
paths:
  /api/v1/tap:
    get:
      tags:
        - Taps
      summary: Get a tap configuration
      description: >-
        Returns a single tap configuration, including the script content from
        MinIO.
      parameters:
        - name: name
          in: query
          required: true
          schema:
            type: string
          description: Tap name
      responses:
        '200':
          description: Tap configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TapDetail'
        '404':
          description: Tap not found
components:
  schemas:
    TapDetail:
      description: >-
        Response shape of `GET /api/v1/tap?name=...`. Extends `TapConfig` with
        the script content fetched from MinIO and a `scriptMissing` flag set
        when the tap has a `scriptPath` but the object is absent from storage
        (e.g. deleted during an interrupted edit or re-generation). Use this
        flag in UIs to distinguish "never generated" (script null, flag absent)
        from "object vanished" (script null, `scriptMissing: true`).
      allOf:
        - $ref: '#/components/schemas/TapConfig'
        - type: object
          properties:
            script:
              type: string
              nullable: true
              description: >-
                Python script body fetched from MinIO. Null when the tap has no
                script yet or when the script object is missing.
            scriptMissing:
              type: boolean
              description: >-
                Present and `true` only when `scriptPath` is set but the storage
                read returned no object. Omitted otherwise.
    TapConfig:
      type: object
      required:
        - name
        - description
        - targetPipeline
      properties:
        name:
          type: string
          description: Unique tap identifier
        description:
          type: string
          description: Plain-English instruction used to generate the script
        scriptPath:
          type: string
          description: MinIO path of the generated Python script
        targetPipeline:
          type: string
          description: Pipeline this tap feeds into (may be empty for unattached taps)
        packages:
          type: array
          items:
            type: string
          description: Extra pip packages required by the script
        secretName:
          type: string
          description: Name of the tap secret (Vault) injected as env vars at runtime
        cronExpression:
          type: string
          description: Quartz CRON expression for scheduled runs (omit for manual-only)
        enabled:
          type: boolean
          default: true
        tapType:
          type: string
          enum:
            - structured
            - document
          default: structured
          description: >-
            `structured` (default) — the script returns records that flow into a
            structured pipeline destination. `document` — the script returns
            `{uri, filename, content}` dicts destined for a vector-store
            pipeline (unstructured source +
            qdrant/pgvector/weaviate/milvus/chroma destination). The server
            rejects a document tap pointed at an incompatible pipeline with HTTP
            400. Document taps also use a per-URI ledger so each file is
            processed once across re-runs.
        lastRunStatus:
          type: string
          enum:
            - success
            - failure
        lastRunTime:
          type: string
        lastRunRecordCount:
          type: integer
        lastRunError:
          type: string
        lastRunDataType:
          type: string
          enum:
            - csv
            - json
            - xml
            - text
            - document
        lastRunColumns:
          type: array
          items:
            type: string
        lastTestRunStatus:
          type: string
        lastTestRunTime:
          type: string
        lastTestRunRecordCount:
          type: integer
        lastTestRunError:
          type: string
        lastTestRunDataType:
          type: string
        lastTestRunColumns:
          type: array
          items:
            type: string
        createdAt:
          type: string
        updatedAt:
          type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Optional API key for authentication (enabled via application.yaml)

````