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

# Update connection snapshot policy

> Replace a connection's snapshot policy without touching its settings or secrets.

Destructive — requires ``confirm=true`` and write scope. The replaced policy is
not kept, and an applied replacement cannot be undone through this API.

Send ``if_match_updated_at`` carrying the connection's current ``updatedAt`` (from
``GET /v1/connections/data/{connection_id}``) and the write is refused with 412 if the
connection changed since. Because this replaces the policy in full, two callers working
from the same read would otherwise leave only the last writer's policy standing, with no
sign the other was discarded. Optional so that a caller predating the field still works.

Same ``snapshot_config`` object the connection PATCH takes, and it replaces the
stored policy in full: read the current one back from the connection and send the
merged object, because omitted keys are cleared. The one exception matches the
connection PATCH — on an HTTP connection, omitting ``http_replication`` preserves
the stored one, so a caller that does not round-trip it cannot erase it; send it to
replace it, or ``null`` to clear it.

For an HTTP/REST connection this is what turns raw API responses into flat, typed
tables: each ``http_replication`` resource names a ``request_path``, the
``pagination.data_pointer`` that locates the row array, the pagination mode, and the
``json_string_fields`` whose nested objects and arrays must land as JSON strings
rather than break schema inference. Without it a dataset snapshots as one envelope
row per response page, with the payload in a ``content`` column.



## OpenAPI

````yaml https://api.summation.com/openapi.json patch /v1/connections/data/{connection_id}/snapshot-config
openapi: 3.1.0
info:
  title: summation-api public API
  version: 0.1.0
servers: []
security: []
tags:
  - name: Auth
    description: Machine authentication for API clients.
  - name: Tenant
    description: Organization and tenant context resolved by summation-api.
  - name: Projects
    description: Project resources.
  - name: Conversations
    description: Conversation and message resources.
  - name: Reports
    description: Report resources and report operations.
  - name: Runs
    description: Project run history and execution status.
  - name: Playbooks
    description: Playbook resources.
  - name: Files
    description: Project file resources.
  - name: Catalog Entries
    description: Project-scoped data asset attachments.
  - name: Data Connectors
    description: Reusable external data source connections.
  - name: App Connectors
    description: External app connectors whose tools the agent can use during chat.
  - name: Tables
    description: Canonical table metadata and catalog.
  - name: Views
    description: Canonical Summation view metadata and catalog.
  - name: Query Executions
    description: Read-only SQL query execution.
  - name: Grid
    description: Materialized grid status, sync, and lineage.
  - name: Schedules
    description: Schedule and schedule run inspection.
  - name: Workflows
    description: >-
      Workflows: what they run, when they run, and where their output is
      delivered.
  - name: Verification Tests
    description: >-
      Administrative custom verification-test definitions, overlays, and
      effective-set previews.
paths:
  /v1/connections/data/{connection_id}/snapshot-config:
    patch:
      tags:
        - Data Connectors
      summary: Update connection snapshot policy
      description: >-
        Replace a connection's snapshot policy without touching its settings or
        secrets.


        Destructive — requires ``confirm=true`` and write scope. The replaced
        policy is

        not kept, and an applied replacement cannot be undone through this API.


        Send ``if_match_updated_at`` carrying the connection's current
        ``updatedAt`` (from

        ``GET /v1/connections/data/{connection_id}``) and the write is refused
        with 412 if the

        connection changed since. Because this replaces the policy in full, two
        callers working

        from the same read would otherwise leave only the last writer's policy
        standing, with no

        sign the other was discarded. Optional so that a caller predating the
        field still works.


        Same ``snapshot_config`` object the connection PATCH takes, and it
        replaces the

        stored policy in full: read the current one back from the connection and
        send the

        merged object, because omitted keys are cleared. The one exception
        matches the

        connection PATCH — on an HTTP connection, omitting ``http_replication``
        preserves

        the stored one, so a caller that does not round-trip it cannot erase it;
        send it to

        replace it, or ``null`` to clear it.


        For an HTTP/REST connection this is what turns raw API responses into
        flat, typed

        tables: each ``http_replication`` resource names a ``request_path``, the

        ``pagination.data_pointer`` that locates the row array, the pagination
        mode, and the

        ``json_string_fields`` whose nested objects and arrays must land as JSON
        strings

        rather than break schema inference. Without it a dataset snapshots as
        one envelope

        row per response page, with the payload in a ``content`` column.
      operationId: update_data_connection_snapshot_config
      parameters:
        - name: connection_id
          in: path
          required: true
          schema:
            type: string
            title: Connection Id
        - name: confirm
          in: query
          required: false
          schema:
            type: boolean
            description: Set confirm=true to replace the snapshot policy. Required.
            default: false
            title: Confirm
          description: Set confirm=true to replace the snapshot policy. Required.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectionSnapshotConfigRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request or unsupported option.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
        '401':
          description: Missing, invalid, or expired credentials.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
        '403':
          description: Authenticated but missing the required scope.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
        '404':
          description: Resource not found or not accessible.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Rate limit exceeded.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
        '500':
          description: Internal server error.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
      security:
        - SummationMachineAuth:
            - agent:write
components:
  schemas:
    ConnectionSnapshotConfigRequest:
      properties:
        if_match_updated_at:
          anyOf:
            - type: string
            - type: 'null'
          title: If Match Updated At
          description: >-
            The connection's current updatedAt, from GET
            /v1/connections/data/{connection_id}. When given, this write is
            refused with 412 if the connection changed since that read, so it
            cannot overwrite an edit made in between. Omitted, the write applies
            unconditionally.
        snapshot_config:
          additionalProperties: true
          type: object
          title: Snapshot Config
          description: >-
            Replaces the stored snapshot policy in full — read the current one
            back from the connection first and send the merged object, since
            omitted keys are cleared. Same shape as the connection PATCH's
            snapshot_config, including http_replication.
      additionalProperties: false
      type: object
      required:
        - snapshot_config
      title: ConnectionSnapshotConfigRequest
      description: >-
        Snapshot policy on its own, with no field that can carry a credential.


        The combined connection PATCH accepts ``secrets``, so it is withheld
        from the

        agent surface — which also withheld the snapshot policy, the one part of
        a

        connection an agent must be able to author (an HTTP/REST connection
        produces

        flat, typed tables only once ``http_replication`` names each resource's
        path,

        data pointer, pagination and nested JSON fields). This route carries
        that

        policy alone, so it is safe to expose.
    ProblemError:
      description: >-
        Public error envelope (RFC 7807 ``application/problem+json``).


        Mirrors the body produced by :func:`api_error`. Declaring it in the
        contract

        lets generated clients type error handling instead of guessing.
      properties:
        type:
          description: URI reference identifying the problem type.
          title: Type
          type: string
        title:
          description: Short, human-readable summary of the problem type.
          title: Title
          type: string
        status:
          description: HTTP status code.
          title: Status
          type: integer
        detail:
          description: Human-readable explanation specific to this occurrence.
          title: Detail
          type: string
        code:
          description: Stable, machine-readable error code.
          title: Code
          type: string
        request_id:
          description: Correlation id, echoed in the x-request-id header.
          title: Request Id
          type: string
      required:
        - type
        - title
        - status
        - detail
        - code
        - request_id
      title: ProblemError
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    SummationMachineAuth:
      type: oauth2
      flows:
        clientCredentials:
          scopes:
            agent:read: agent:read
            agent:write: agent:write
          tokenUrl: /v1/auth/m2m/token

````