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

# Partially updates an SRT source. Only deactivated sources can be updated.



## OpenAPI

````yaml /platform/livesources-api/openapi.json patch /sources/{source_id}
openapi: 3.1.3
info:
  title: UP.LiveSources API Specification
  version: 1.0.0
  description: |
    Telestream UP.LiveSources API Specification.

    REST surface for the UP.LiveSources service: organization-scoped
    SRT source ingestion that other UP applications (LiveCapture, Lens,
    and so on) consume as CHLS streams.

    Naming conventions follow the rest of the UP REST surface
    (snake_case path parameters, operation IDs, and JSON properties).
    Pagination is offset-based (`page`, `per_page`) returning a wrapper
    with the resource-named array plus `page_count` and `total_count`.
  termsOfService: https://www.telestream.net/telestream-cloud/terms.htm
  contact:
    name: API Support
    url: https://www.telestream.com
    email: up@telestream.net
  license:
    name: Proprietary — Telestream
servers:
  - url: https://api.up.telestream.com/livesources/v1
    description: Production
security:
  - BearerAuth: []
tags:
  - name: source
    description: Operations related to live sources
  - name: access
    description: Operations related to access checks
paths:
  /sources/{source_id}:
    parameters:
      - $ref: '#/components/parameters/source_id'
    patch:
      tags:
        - source
      summary: >-
        Partially updates an SRT source. Only deactivated sources can be
        updated.
      operationId: update_srt_source
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSrtSourceInput'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SrtSource'
          description: Update Source
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - BearerAuth:
            - livesources:source:source-management
components:
  parameters:
    source_id:
      name: source_id
      description: Unique identifier of a Source
      schema:
        type: string
        format: uuid
      in: path
      required: true
  schemas:
    UpdateSrtSourceInput:
      type: object
      description: All fields are optional; supplied fields are updated.
      properties:
        name:
          type: string
        description:
          type: string
        engine_version:
          type:
            - string
            - 'null'
        redundancy:
          type: boolean
        region:
          type:
            - string
            - 'null'
        srt_settings:
          $ref: '#/components/schemas/SrtSettings'
        tags:
          type: array
          items:
            type: string
    SrtSource:
      description: SRT-specific source representation. Extends `Source`.
      allOf:
        - $ref: '#/components/schemas/Source'
        - type: object
          required:
            - redundancy
            - srt_settings
          properties:
            redundancy:
              type: boolean
              description: Whether two SRT receivers are deployed for redundancy.
            srt_settings:
              $ref: '#/components/schemas/SrtSettings'
    SrtSettings:
      type: object
      description: |
        SRT receiver configuration. Validated server-side against
        the JSON schema bundled with the LiveSources service
        (`schemas/srt_settings.json`). Field semantics:

        * `mode` — `listener` (UP listens for an incoming SRT
          connection) or `caller` (UP dials out to a remote SRT
          server).
        * In **listener mode**, `whitelisted_ip_addresses` is
          required and `ip` / `port` (top-level and inside
          `redundant_source`) are ignored.
        * In **caller mode**, top-level `ip` and `port` are
          required.
        * If `redundant_source.enabled` is `true` and `mode` is
          `caller`, `redundant_source.ip` and `redundant_source.port`
          are required.
        * If `aes_encryption.enabled` is `true`, `key_length` and
          `passphrase` are required. When the source is also
          redundant, `backup_key_length` and `backup_passphrase`
          are required as well.

        The REST gateway exposes these settings as a structured
        object using the snake_case names below; the upstream
        GraphQL service stores the same data as a JSON-serialised
        string with camelCase keys (e.g. `whitelistedIpAddresses`).
        The gateway translates names in both directions.
      required:
        - mode
        - minimum_latency
      properties:
        mode:
          type: string
          enum:
            - listener
            - caller
          description: |
            `listener` — UP listens for the incoming SRT stream.
            `caller` — UP dials out to a remote SRT server.
        port:
          type: integer
          minimum: 1000
          maximum: 99999
          description: >-
            SRT port. Required in caller mode (the remote server's port);
            ignored in listener mode (the listening port is assigned by UP).
        ip:
          type: string
          format: ipv4
          description: >-
            Remote SRT server IP. Required in caller mode; ignored in listener
            mode.
        minimum_latency:
          type: integer
          minimum: 20
          description: Receive-side latency in milliseconds.
        whitelisted_ip_addresses:
          type: array
          items:
            type: string
            format: ipv4
          description: IPs permitted to connect. Required in listener mode.
        redundant_source:
          $ref: '#/components/schemas/SrtRedundantSource'
        aes_encryption:
          $ref: '#/components/schemas/SrtAesEncryption'
        force_8bit_video:
          type: boolean
          description: Force the engine to emit 8-bit video output.
        free_run_timecode:
          type: boolean
          description: Use a free-running timecode instead of the embedded one.
        freeze_on_los:
          type: boolean
          description: Freeze the last received frame on loss-of-signal.
        srt_passthrough:
          $ref: '#/components/schemas/SrtPassthrough'
      examples:
        - mode: listener
          minimum_latency: 120
          whitelisted_ip_addresses:
            - 203.0.113.10
            - 203.0.113.11
          redundant_source:
            enabled: false
          aes_encryption:
            enabled: true
            key_length: '128'
            passphrase: correct horse battery staple
          force_8bit_video: false
          free_run_timecode: false
          freeze_on_los: true
          srt_passthrough:
            enabled: false
    Source:
      type: object
      description: |
        Common source representation. The `kind` discriminator
        indicates which subtype-specific fields are populated.
        Currently only `SrtSource` is defined.
      required:
        - id
        - name
        - description
        - kind
        - status
        - active_receiver
        - primary_connection_state
        - secondary_connection_state
      properties:
        id:
          description: This is the GUID for the Source.
          type: string
          format: uuid
          readOnly: true
          examples:
            - e3c908ad-dc8f-4edb-88f7-c84dec0aef99
        kind:
          $ref: '#/components/schemas/SourceKind'
        name:
          description: Source name
          type: string
          examples:
            - CNN East Feed
        description:
          description: Describes the Source purpose
          type: string
          examples:
            - Primary east-coast feed for breaking news.
        status:
          $ref: '#/components/schemas/SourceStatus'
        activated_at:
          format: date-time
          description: Timestamp when the Source was last activated, in UTC iso8601 format.
          type:
            - string
            - 'null'
          readOnly: true
          examples:
            - '2025-04-21T15:53:12.388317Z'
        active_receiver:
          $ref: '#/components/schemas/ConnectionType'
        engine_version:
          description: Engine version that hosts the source.
          type:
            - string
            - 'null'
        errors:
          type:
            - array
            - 'null'
          items:
            type: string
          readOnly: true
        passthrough_url:
          description: >-
            Optional SRT passthrough URL when the source has passthrough
            enabled.
          type:
            - string
            - 'null'
          readOnly: true
        primary_connection_state:
          $ref: '#/components/schemas/ConnectionStateType'
        primary_ingress_url:
          description: >-
            Ingress URL the customer's encoder pushes the primary stream to
            (caller mode), or that LiveCapture listens on (listener mode).
          type:
            - string
            - 'null'
          readOnly: true
        region:
          description: Cloud region in which the source is hosted.
          type:
            - string
            - 'null'
        secondary_connection_state:
          $ref: '#/components/schemas/ConnectionStateType'
        secondary_ingress_url:
          description: Ingress URL for the redundant receiver, when redundancy is enabled.
          type:
            - string
            - 'null'
          readOnly: true
        stream_metadata:
          description: Engine-reported metadata of the active stream as a JSON string.
          type:
            - string
            - 'null'
          readOnly: true
        tags:
          type:
            - array
            - 'null'
          items:
            type: string
        transport_statistics_primary:
          description: >-
            Engine-reported SRT transport statistics for the primary receiver as
            a JSON string.
          type:
            - string
            - 'null'
          readOnly: true
        transport_statistics_secondary:
          description: >-
            Engine-reported SRT transport statistics for the secondary receiver
            as a JSON string.
          type:
            - string
            - 'null'
          readOnly: true
        created_at:
          format: date-time
          description: Timestamp when Source was created, in UTC iso8601 format.
          type: string
          readOnly: true
          examples:
            - '2025-04-21T15:53:12.388317Z'
        updated_at:
          format: date-time
          description: Timestamp when Source was last updated, in UTC iso8601 format.
          type: string
          readOnly: true
          examples:
            - '2025-04-22T15:53:12.182617Z'
    SrtRedundantSource:
      type: object
      description: |
        Settings for the secondary SRT receiver when `redundancy`
        is true on the parent source. In caller mode both `ip` and
        `port` are required when `enabled` is true; in listener
        mode they are ignored.
      required:
        - enabled
      properties:
        enabled:
          type: boolean
        port:
          type: integer
          minimum: 1000
          maximum: 99999
        ip:
          type: string
          format: ipv4
    SrtAesEncryption:
      type: object
      description: |
        AES encryption for the SRT stream. When `enabled` is true,
        `key_length` and `passphrase` are required. If the source
        is also redundant, `backup_key_length` and
        `backup_passphrase` are required for the secondary
        receiver.
      required:
        - enabled
      properties:
        enabled:
          type: boolean
        key_length:
          type: string
          enum:
            - '128'
            - '256'
          description: AES key length in bits.
        passphrase:
          type: string
          minLength: 10
          maxLength: 79
        backup_key_length:
          type: string
          enum:
            - '128'
            - '256'
          description: AES key length for the redundant receiver.
        backup_passphrase:
          type: string
          minLength: 10
          maxLength: 79
    SrtPassthrough:
      type: object
      description: |
        Re-broadcasts the received SRT stream on a separate port
        so other consumers (e.g. UP.Lens) can subscribe to it
        without re-hitting the upstream encoder. When `enabled`
        is true, `port` and `latency` are required.
      properties:
        enabled:
          type: boolean
        port:
          type: integer
          minimum: 1000
          maximum: 99999
        latency:
          type: integer
          minimum: 0
          description: Passthrough latency in milliseconds.
    SourceKind:
      enum:
        - SRT
      type: string
      readOnly: true
      examples:
        - SRT
    SourceStatus:
      enum:
        - INACTIVE
        - PENDING
        - ACTIVE
        - STOPPING
        - ERROR
      type: string
      readOnly: true
      examples:
        - ACTIVE
    ConnectionType:
      enum:
        - PRIMARY
        - SECONDARY
        - UNKNOWN
      type: string
      readOnly: true
    ConnectionStateType:
      enum:
        - CONNECTED
        - DISCONNECTED
        - WAITING
      type: string
      readOnly: true
  responses:
    Unauthorized:
      content:
        application/json:
          schema:
            type: object
            properties:
              error_message:
                type: string
            examples:
              - error_message: You don't have permission to access this resource
      description: Not authorized
    NotFound:
      content:
        application/json:
          schema:
            type: object
            properties:
              error_message:
                type: string
            examples:
              - error_message: 404 Not found
      description: Item not found
    Unprocessable:
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: object
                additionalProperties:
                  type: string
            examples:
              - errors:
                  srt_settings: srt_settings is missing required field 'mode'
      description: Invalid options provided
    InternalError:
      content:
        application/json:
          schema:
            type: object
            properties:
              error_message:
                type: string
            examples:
              - error_message: 500 internal error
      description: 500 Internal error
  securitySchemes:
    BearerAuth:
      type: oauth2
      description: OAuth2 bearer token in the Authorization header
      flows:
        clientCredentials:
          tokenUrl: /auth/token
          scopes:
            livesources:access: Validate that the token has access to LiveSources
            livesources:source:access: Read access to live sources
            livesources:source:source-management: Manage (create / update / delete / activate) live sources

````