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

# Propose destination column types from landed data

> Agent-created pipelines store every destination column as text. This stateless call samples up to 1000 rows that already landed in the destination (postgres, snowflake, or databricks), infers real column types deterministically, and returns them with per-column evidence: a few distinct sample values, and — for columns kept as string by a dirty value — the offending value and the type it blocked. Nothing is stored or changed.



## OpenAPI

````yaml /openapi.yaml get /api/v1/pipeline/dest-types
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.28.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/pipeline/dest-types:
    get:
      tags:
        - Pipelines
      summary: Propose destination column types from landed data
      description: >-
        Agent-created pipelines store every destination column as text. This
        stateless call samples up to 1000 rows that already landed in the
        destination (postgres, snowflake, or databricks), infers real column
        types deterministically, and returns them with per-column evidence: a
        few distinct sample values, and — for columns kept as string by a dirty
        value — the offending value and the type it blocked. Nothing is stored
        or changed.
      parameters:
        - name: pipeline
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The proposal, or the reason there is none
          content:
            application/json:
              schema:
                type: object
                properties:
                  pipeline:
                    type: string
                  eligible:
                    type: boolean
                  reason:
                    type: string
                    enum:
                      - destination-not-supported
                      - already-typed
                      - no-landed-rows
                    description: Present when eligible is false.
                  message:
                    type: string
                  sampleRowCount:
                    type: integer
                  fields:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        type:
                          type: string
                          enum:
                            - string
                            - boolean
                            - int
                            - bigint
                            - double
                            - date
                            - timestamp
                        samples:
                          type: array
                          description: Up to 5 distinct landed values, truncated.
                          items:
                            type: string
                        stringReason:
                          type: object
                          description: >-
                            Why the column stayed string, when a dirty value
                            blocked a type.
                          properties:
                            value:
                              type: string
                            blocked:
                              type: string
        '400':
          description: Pipeline not found
        '500':
          description: Error
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Optional API key for authentication (enabled via application.yaml)

````