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

# Update a source

> Updates a source's configuration. Requires an admin role.



## OpenAPI

````yaml /api-reference/openapi.json put /v1/admin/sources/{source_id}
openapi: 3.1.0
info:
  description: >-
    Splendor is a search and retrieval API for your operational data. Ingest

    datasets — logs, documents, and structured records — and query them through
    one

    consistent interface that spans full-text, SQL, and semantic (vector)
    search.


    Every request authenticates with a bearer token and selects a workspace with
    the

    `X-Splendor-Tenant-Id` header. Read and query operations are available to
    any

    member; operations that create, change, or delete data require an admin
    role.


    All search modes return one shared envelope, and every result carries
    provenance

    back to the exact source object it came from.
  title: Splendor API
  version: 1.0.0
servers:
  - description: Production
    url: https://api.withsplendor.com
security:
  - bearerAuth: []
tags:
  - description: Resolve the authenticated user and the tenants they can access.
    name: Identity
  - description: >-
      Build on Splendor as a platform: authenticate with a platform API key to
      provision an isolated tenant per end-customer and manage your platform
      keys.
    name: Platform
  - description: >-
      List datasets, inspect inferred schemas and readiness, and manage dataset
      lifecycle including deletion and schema rebuilds.
    name: Datasets & schema
  - description: >-
      Run full-text, SQL, and semantic search over your datasets, stream
      results, and resolve object media.
    name: Search & query
  - description: Save queries and materialize result sets for repeatable analysis.
    name: Views
  - description: >-
      Define named, versioned, parameterized SQL queries and manage their
      versions.
    name: Query Endpoints
  - description: Create and manage asynchronous exports of search results.
    name: Exports
  - description: >-
      Configure data sources, upload data through hosted multipart uploads,
      stream logs, and track ingest runs.
    name: Sources & ingest
  - description: >-
      Connect third-party systems by managing connector instances in the
      selected tenant.
    name: Connectors
  - description: Define and test detection rules that run against incoming data.
    name: Detections
  - description: Inspect discovered fields and promote them to fast, aggregatable fields.
    name: Fields
  - description: >-
      Operational visibility and recovery: audit logs, usage, dead-letter queue,
      reindex jobs, and data-deletion jobs.
    name: Operations
paths:
  /v1/admin/sources/{source_id}:
    put:
      tags:
        - Sources & ingest
      summary: Update a source
      description: Updates a source's configuration. Requires an admin role.
      operationId: updateSource
      parameters:
        - in: path
          name: source_id
          required: true
          schema:
            title: Source Id
            type: integer
        - $ref: '#/components/parameters/SplendorTenantId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceUpdateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceItem'
          description: Successful Response
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: The requested resource was not found.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
components:
  parameters:
    SplendorTenantId:
      description: Selects the tenant (workspace) the request acts within.
      in: header
      name: x-splendor-tenant-id
      required: true
      schema:
        type: string
  schemas:
    SourceUpdateRequest:
      additionalProperties: false
      properties:
        bucket:
          maxLength: 255
          minLength: 1
          title: Bucket
          type: string
        connector_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Connector Id
        dataset_id:
          maxLength: 128
          minLength: 1
          title: Dataset Id
          type: string
        enabled:
          default: true
          title: Enabled
          type: boolean
        iam_role_arn:
          maxLength: 2048
          minLength: 1
          title: Iam Role Arn
          type: string
        intake_role_arn:
          anyOf:
            - maxLength: 2048
              minLength: 1
              type: string
            - type: 'null'
          title: Intake Role Arn
        name:
          maxLength: 255
          minLength: 1
          title: Name
          type: string
        parse_config:
          additionalProperties: true
          title: Parse Config
          type: object
        prefix:
          default: ''
          maxLength: 1024
          title: Prefix
          type: string
        retention_days:
          anyOf:
            - minimum: 1
              type: integer
            - type: 'null'
          title: Retention Days
        search_config:
          $ref: '#/components/schemas/SearchConfig'
        semantic_config:
          $ref: '#/components/schemas/SemanticConfig'
        source_key:
          maxLength: 128
          minLength: 1
          title: Source Key
          type: string
        source_type:
          maxLength: 128
          minLength: 1
          title: Source Type
          type: string
        transform_config:
          additionalProperties: true
          title: Transform Config
          type: object
      required:
        - source_key
        - name
        - dataset_id
        - source_type
        - bucket
        - iam_role_arn
      title: SourceUpdateRequest
      type: object
    SourceItem:
      example:
        bucket: acme-logs
        connector_id: null
        created_at: '2026-01-15T09:30:00Z'
        dataset_id: app-logs
        enabled: true
        external_id_configured: false
        iam_role_arn: arn:aws:iam::123456789012:role/acme-splendor
        ingest_token_configured: true
        ingest_token_created_at: '2026-01-15T09:30:00Z'
        ingest_token_last_used_at: '2026-01-15T09:30:00Z'
        ingest_token_revoked_at: null
        intake_role_arn: null
        name: Application logs
        parse_config: {}
        prefix: ''
        retention_days: null
        search_config:
          text_fields: []
        semantic_config:
          document_embeddings:
            fields: []
          filters:
            fields: []
          image_embeddings:
            fields: []
            index_standalone: false
          vocabulary:
            fields: []
        source_id: 12
        source_key: app-logs
        source_type: hosted
        tenant_id: acme
        transform_config: {}
        updated_at: '2026-01-15T09:30:00Z'
      properties:
        bucket:
          title: Bucket
          type: string
        connector_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Connector Id
        created_at:
          format: date-time
          title: Created At
          type: string
        dataset_id:
          title: Dataset Id
          type: string
        enabled:
          title: Enabled
          type: boolean
        external_id_configured:
          title: External Id Configured
          type: boolean
        iam_role_arn:
          title: Iam Role Arn
          type: string
        ingest_token_configured:
          title: Ingest Token Configured
          type: boolean
        ingest_token_created_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Ingest Token Created At
        ingest_token_last_used_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Ingest Token Last Used At
        ingest_token_revoked_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Ingest Token Revoked At
        intake_role_arn:
          anyOf:
            - type: string
            - type: 'null'
          title: Intake Role Arn
        name:
          title: Name
          type: string
        parse_config:
          additionalProperties: true
          title: Parse Config
          type: object
        prefix:
          title: Prefix
          type: string
        retention_days:
          anyOf:
            - type: integer
            - type: 'null'
          title: Retention Days
        search_config:
          $ref: '#/components/schemas/SearchConfig'
        semantic_config:
          $ref: '#/components/schemas/SemanticConfig'
        source_id:
          title: Source Id
          type: integer
        source_key:
          title: Source Key
          type: string
        source_type:
          title: Source Type
          type: string
        tenant_id:
          title: Tenant Id
          type: string
        transform_config:
          additionalProperties: true
          title: Transform Config
          type: object
        updated_at:
          format: date-time
          title: Updated At
          type: string
      required:
        - source_id
        - tenant_id
        - connector_id
        - source_key
        - name
        - dataset_id
        - source_type
        - bucket
        - prefix
        - iam_role_arn
        - external_id_configured
        - intake_role_arn
        - enabled
        - parse_config
        - transform_config
        - semantic_config
        - search_config
        - retention_days
        - ingest_token_configured
        - ingest_token_created_at
        - ingest_token_revoked_at
        - ingest_token_last_used_at
        - created_at
        - updated_at
      title: SourceItem
      type: object
    ApiError:
      description: >-
        Error envelope returned by every Splendor API endpoint.


        ``detail`` is either a plain message string (most errors) or a
        structured

        ``{code, message}`` object (validation and capacity errors that carry a
        stable

        machine-readable code).
      examples:
        - detail: Dataset not found
        - detail:
            code: semantic_search_capacity_exhausted
            message: Semantic search capacity is temporarily exhausted; retry shortly.
      properties:
        detail:
          anyOf:
            - type: string
            - $ref: '#/components/schemas/ErrorBody'
          title: Detail
      required:
        - detail
      title: ApiError
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    SearchConfig:
      additionalProperties: false
      properties:
        text_fields:
          items:
            $ref: '#/components/schemas/SearchTextFieldConfig'
          maxItems: 64
          title: Text Fields
          type: array
      title: SearchConfig
      type: object
    SemanticConfig:
      additionalProperties: false
      properties:
        document_embeddings:
          $ref: '#/components/schemas/SemanticDocumentEmbeddingConfig'
        filters:
          $ref: '#/components/schemas/SemanticFiltersConfig'
        image_embeddings:
          $ref: '#/components/schemas/SemanticImageEmbeddingConfig'
        vocabulary:
          $ref: '#/components/schemas/SemanticVocabularyConfig'
      title: SemanticConfig
      type: object
    ErrorBody:
      description: Structured error detail returned by validation and capacity errors.
      examples:
        - code: semantic_query_text_required
          message: Semantic vector search requires non-empty text.
      properties:
        code:
          title: Code
          type: string
        message:
          title: Message
          type: string
      required:
        - code
        - message
      title: ErrorBody
      type: object
    ValidationError:
      properties:
        ctx:
          title: Context
          type: object
        input:
          title: Input
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
    SearchTextFieldConfig:
      additionalProperties: false
      properties:
        boost:
          anyOf:
            - exclusiveMinimum: 0
              type: number
            - type: 'null'
          title: Boost
        field:
          maxLength: 256
          minLength: 1
          title: Field
          type: string
        natural_language:
          default: true
          title: Natural Language
          type: boolean
      required:
        - field
      title: SearchTextFieldConfig
      type: object
    SemanticDocumentEmbeddingConfig:
      additionalProperties: false
      properties:
        fields:
          items:
            $ref: '#/components/schemas/SemanticDocumentFieldConfig'
          title: Fields
          type: array
      title: SemanticDocumentEmbeddingConfig
      type: object
    SemanticFiltersConfig:
      additionalProperties: false
      properties:
        fields:
          items:
            $ref: '#/components/schemas/SemanticFilterFieldConfig'
          maxItems: 32
          title: Fields
          type: array
      title: SemanticFiltersConfig
      type: object
    SemanticImageEmbeddingConfig:
      additionalProperties: false
      properties:
        fields:
          items:
            $ref: '#/components/schemas/SemanticImageFieldConfig'
          maxItems: 32
          title: Fields
          type: array
        index_standalone:
          default: false
          title: Index Standalone
          type: boolean
      title: SemanticImageEmbeddingConfig
      type: object
    SemanticVocabularyConfig:
      additionalProperties: false
      properties:
        fields:
          items:
            $ref: '#/components/schemas/SemanticVocabularyFieldConfig'
          title: Fields
          type: array
      title: SemanticVocabularyConfig
      type: object
    SemanticDocumentFieldConfig:
      additionalProperties: false
      properties:
        field:
          minLength: 1
          title: Field
          type: string
        max_chars:
          default: 4000
          maximum: 20000
          minimum: 1
          title: Max Chars
          type: integer
      required:
        - field
      title: SemanticDocumentFieldConfig
      type: object
    SemanticFilterFieldConfig:
      additionalProperties: false
      properties:
        array:
          default: false
          title: Array
          type: boolean
        field:
          maxLength: 256
          minLength: 1
          title: Field
          type: string
        type:
          enum:
            - keyword
            - i64
            - f64
            - bool
            - datetime
            - ip
          title: Type
          type: string
      required:
        - field
        - type
      title: SemanticFilterFieldConfig
      type: object
    SemanticImageFieldConfig:
      additionalProperties: false
      properties:
        field:
          maxLength: 256
          minLength: 1
          title: Field
          type: string
      required:
        - field
      title: SemanticImageFieldConfig
      type: object
    SemanticVocabularyFieldConfig:
      additionalProperties: false
      properties:
        field:
          minLength: 1
          title: Field
          type: string
      required:
        - field
      title: SemanticVocabularyFieldConfig
      type: object
  responses:
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      description: The bearer token is missing, malformed, or expired.
    Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      description: The token lacks access to the tenant or the role required.
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      description: API token issued from the Splendor console.
      scheme: bearer
      type: http

````