---
title: "Update Transform"
method: PUT
path: "/transforms"
tags: ["Transforms"]
---

# Update Transform

`PUT /transforms`

## Request body

- UpdateTransformReq
  - `transform` 'fan_out' | 'sql_join' | 'enrich' | 'enrich_async' | 'map_filter' | 'toast_handling' | 'un_nesting' | 'rollup' | 'topic_router', required
  - `config` TransformConfig, required
    - `transforms.name` string, required
    - `transforms.language` string, nullable
    - `transforms.input.topic.pattern` string, required
    - `transforms.output.topic.pattern` string, required
    - `transforms.input.serialization.format` 'Any' | 'Json' | 'Avro', required
    - `transforms.output.serialization.format` 'Any' | 'Json' | 'Avro', required
    - `transforms.input.job.parallelism` integer
    - `transforms.topic.ttl` string, nullable
    - `kc.cluster.id` string, nullable
  - `created_from` 'terraform' | 'web' | 'api' — Origin of an entity in the system. Tracks how entities (sources, destinations, pipelines) were created, enabling audit trails and origin-specific behavior.
  - `tags` string[], nullable — List of tag IDs to assign to this transform
  - `id` string, required

## Response `200`

Successful Response

- FullTransformEntity — Basic transform details.
  - `id` string, required
  - `name` string, required
  - `sub_id` string, required
  - `tenant_id` string, required
  - `service_id` string, nullable
  - `start_time` union
    - string
    - string, date-time
  - `job_name` string, nullable
  - `topic_ids` union
    - string[]
    - string
  - `transform_type` 'fan_out' | 'sql_join' | 'enrich' | 'enrich_async' | 'map_filter' | 'toast_handling' | 'un_nesting' | 'rollup' | 'topic_router', required
  - `config` union
    - TransformConfig
      - `transforms.name` string, required
      - `transforms.language` string, nullable
      - `transforms.input.topic.pattern` string, required
      - `transforms.output.topic.pattern` string, required
      - `transforms.input.serialization.format` 'Any' | 'Json' | 'Avro', required
      - `transforms.output.serialization.format` 'Any' | 'Json' | 'Avro', required
      - `transforms.input.job.parallelism` integer
      - `transforms.topic.ttl` string, nullable
      - `kc.cluster.id` string, nullable
    - TransformsEnrichAsyncConfig
      - `transforms.name` string, required
      - `transforms.language` string, nullable
      - `transforms.input.topic.pattern` string, required
      - `transforms.output.topic.pattern` string, required
      - `transforms.input.serialization.format` 'Any' | 'Json' | 'Avro', required
      - `transforms.output.serialization.format` 'Any' | 'Json' | 'Avro', required
      - `transforms.input.job.parallelism` integer
      - `transforms.topic.ttl` string, nullable
      - `kc.cluster.id` string, nullable
      - `transforms.async.timeout.ms` integer
      - `transforms.async.capacity` integer
  - `implementation` union
    - TransformsMapFilterImplementation
      - `language` 'PYTHON' | 'JAVASCRIPT' | 'SQL', required
      - `value_transform` string, required
      - `key_transform` string, nullable
      - `topic_transform` string, nullable
      - `common_transform` string, nullable
      - `value_schema_transform` string, nullable
      - `key_schema_transform` string, nullable
      - `unit_test` TransformsUnitTest
        - `test_name` string, required
        - `input__json` TransformsImplementationDetailsTestRecord[], required
          - `topic` string, required
          - `value` object, required
          - `key` object, nullable
          - `timestamp` string, date-time, nullable
        - `output__json` TransformsImplementationDetailsTestRecord[], required
          - `topic` string, required
          - `value` object, required
          - `key` object, nullable
          - `timestamp` string, date-time, nullable
        - `result__json` TransformsImplementationDetailsTestRecord[], nullable
          - `topic` string, required
          - `value` object, required
          - `key` object, nullable
          - `timestamp` string, date-time, nullable
        - `is_success` boolean, nullable
        - `html_diff` string, nullable
        - `text_diff` string, nullable
    - TransformsEnrichImplementation
      - `mainTable` TransformInputTable, required
        - `name` string, required
        - `topicMatcherRegex` string, required
        - `createTableSQL` string, nullable
      - `lookupTable` TransformInputTable, required
        - `name` string, required
        - `topicMatcherRegex` string, required
        - `createTableSQL` string, nullable
      - `enrichSQL` string, required
    - TransformsEnrichAsyncImplementation
      - `language` 'PYTHON' | 'JAVASCRIPT' | 'SQL', required
      - `value_transform` string, required
      - `key_transform` string, nullable
      - `topic_transform` string, nullable
      - `common_transform` string, nullable
      - `value_schema_transform` string, nullable
      - `key_schema_transform` string, nullable
      - `unit_test` TransformsUnitTest
        - `test_name` string, required
        - `input__json` TransformsImplementationDetailsTestRecord[], required
          - `topic` string, required
          - `value` object, required
          - `key` object, nullable
          - `timestamp` string, date-time, nullable
        - `output__json` TransformsImplementationDetailsTestRecord[], required
          - `topic` string, required
          - `value` object, required
          - `key` object, nullable
          - `timestamp` string, date-time, nullable
        - `result__json` TransformsImplementationDetailsTestRecord[], nullable
          - `topic` string, required
          - `value` object, required
          - `key` object, nullable
          - `timestamp` string, date-time, nullable
        - `is_success` boolean, nullable
        - `html_diff` string, nullable
        - `text_diff` string, nullable
      - `async_timeout_ms` integer
      - `async_capacity` integer
    - TransformsJoinImplementation
      - `inputTables` TransformInputTable[]
        - `name` string, required
        - `topicMatcherRegex` string, required
        - `createTableSQL` string, nullable
      - `joinSQL` string, required
      - `keyFields` string[]
      - `stateTtlMs` string, nullable
    - TransformsRollupImplementation
      - `inputTables` TransformInputTable[]
        - `name` string, required
        - `topicMatcherRegex` string, required
        - `createTableSQL` string, nullable
      - `rollupSQL` string, required
      - `keyFields` string[]
      - `sourceIdleTimeoutMs` integer
      - `stateTTLMs` integer
    - TransformsTopicRouterImplementation — Topic router transform - deployed as KC Kafka destination connector with byte passthrough. No Flink job. Uses ByteArrayConverter + RegexRouter SMT to rewrite topic names without deserializing message values. Input/output patterns come from transform.config (transforms.input.topic.pattern / transforms.output.topic.pattern).
      - `topic_prefix` string — Deprecated - kept for backwards compat with existing DB records
      - `kc_cluster_id` string, nullable — KC cluster to deploy the connector to
  - `metrics` TransformMetric
    - `tasks` integer, nullable
    - `latency` integer, nullable
    - `status` string, nullable
    - `duration` integer, nullable
    - `start_time` union
      - integer
      - string
      - string, date-time
    - `end_time` union
      - string
      - string, date-time
    - `checkpoints` TransformCheckpointsInfo — Checkpoint statistics and latest checkpoint information for a transform.
      - `job_id` string, required
      - `counts` object, required
      - `summary` object, required
      - `latest` TransformCheckpointHistory — Individual checkpoint history entry.
        - `id` integer, required
        - `status` string, required
        - `is_savepoint` boolean, required
        - `trigger_timestamp` integer, required
        - `latest_ack_timestamp` integer, required
        - `state_size` integer, required
        - `end_to_end_duration` integer, required
        - `alignment_buffered` integer, required
        - `num_subtasks` integer, required
        - `num_acknowledged_subtasks` integer, required
      - `history` TransformCheckpointHistory[]
        - `id` integer, required
        - `status` string, required
        - `is_savepoint` boolean, required
        - `trigger_timestamp` integer, required
        - `latest_ack_timestamp` integer, required
        - `state_size` integer, required
        - `end_to_end_duration` integer, required
        - `alignment_buffered` integer, required
        - `num_subtasks` integer, required
        - `num_acknowledged_subtasks` integer, required
      - `operator_breakdown` TransformOperatorState[]
        - `operator_id` string, required
        - `operator_name` string, required
        - `state_size` integer, required
        - `checkpointed_size` integer, required
        - `end_to_end_duration` integer, required
        - `parallelism` integer, required
  - `live_version` string, nullable
  - `preview_version` string, nullable
  - `version` integer
  - `updated_timestamp` string, date-time, nullable
  - `implementation_updated_timestamp` string, date-time, nullable
  - `description` string, nullable
  - `tags` string[], nullable — List of tag IDs assigned to this transform
  - `history_created_timestamp` string, date-time, nullable
  - `history_updated_timestamp` string, date-time, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/streamkap/apis/streamkap-rest-api.md) · [All operations](https://skmtc.net/streamkap/apis/streamkap-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/streamkap/streamkap-rest-api/versions/8aea6143d003/schema)
