---
title: "DiffPipeline returns a diff of the pipeline without modifying any persisted resources."
method: POST
path: "/v1.1/pipeline/diff"
tags: ["ControlService"]
---

# DiffPipeline returns a diff of the pipeline without modifying any persisted resources.

`POST /v1.1/pipeline/diff`

WriteKey must be in the request or set as 'wky' claim within the jwt. Deprecating the requirement in the jwt.
 buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE

## Request body

- ProtobufControlpbV1DiffPipelineRequest
  - `proposed` union
    - object, nullable
    - ProtobufStreamingpbV1Pipeline
      - `author` string
      - `createdAt` string, date-time, nullable
      - `eventSplit` union — EventSplit runs an expression that returns an array of child events for the same pipeline. The source event is replaced by the emitted children. Each child must set the current pipeline write key, and the forwarder rejects the split if any child emits a different write key or if the event does not match a known ingestion schema like AJS. WARNING: This feature is experimental and will not activate on any live pipelines. And may be removed in the future.
        - object, nullable
        - ProtobufStreamingpbV1EventSplit
          - `expression` union
            - object, nullable
            - ProtobufStreamingpbV1Expression
              - …
      - `filter` union — Filter drops source events before destination processing.
        - object, nullable
        - ProtobufStreamingpbV1PipelineFilter
          - `byLua` union — Will filter any event when the value of the LUA expression returns true If there is an error with the LUA filter the event will NOT be dropped
            - object, nullable
            - ProtobufStreamingpbV1FilterOpLua
              - …
      - `integrations` union[], nullable
        - union
          - object, nullable
          - ProtobufStreamingpbV1Integration
            - `connection` union
              - …
            - `consent` union
              - …
            - `delayEvent` union
              - …
            - `description` string
            - `disabled` boolean
            - `endpointSchema` union
              - …
            - `id` string
            - `integrationName` string
            - `modes` string[], nullable — Options for altering integration processing behavior. Recommended for advanced use only.
            - `revision` union
              - …
            - `scope` 'INTEGRATION_SCOPE_UNSPECIFIED' | 'INTEGRATION_SCOPE_PUBLIC' | 'INTEGRATION_SCOPE_INTERNAL'
            - `secretRef` string — UUID of secret object for resolving $$secret.KEY$$ patterns anywhere within the integration.
            - `transformStages` union[], nullable
              - …
      - `transform` union — Transform modifies each event before integration-level transforms run.
        - object, nullable
        - ProtobufStreamingpbV1TransformStage
          - `data` union
            - object, nullable
            - ProtobufStreamingpbV1TransformStageData
              - …
          - `desc` string
          - `name` string
          - `outputContentType` string
      - `writeKey` string
  - `scope` 'INTEGRATION_SCOPE_UNSPECIFIED' | 'INTEGRATION_SCOPE_PUBLIC' | 'INTEGRATION_SCOPE_INTERNAL'

## Response `200`

OK

- ProtobufControlpbV1DiffPipelineResponse
  - `addedIntegrations` string[], nullable
  - `current` union
    - object, nullable
    - ProtobufStreamingpbV1Pipeline
      - `author` string
      - `createdAt` string, date-time, nullable
      - `eventSplit` union — EventSplit runs an expression that returns an array of child events for the same pipeline. The source event is replaced by the emitted children. Each child must set the current pipeline write key, and the forwarder rejects the split if any child emits a different write key or if the event does not match a known ingestion schema like AJS. WARNING: This feature is experimental and will not activate on any live pipelines. And may be removed in the future.
        - object, nullable
        - ProtobufStreamingpbV1EventSplit
          - `expression` union
            - object, nullable
            - ProtobufStreamingpbV1Expression
              - …
      - `filter` union — Filter drops source events before destination processing.
        - object, nullable
        - ProtobufStreamingpbV1PipelineFilter
          - `byLua` union — Will filter any event when the value of the LUA expression returns true If there is an error with the LUA filter the event will NOT be dropped
            - object, nullable
            - ProtobufStreamingpbV1FilterOpLua
              - …
      - `integrations` union[], nullable
        - union
          - object, nullable
          - ProtobufStreamingpbV1Integration
            - `connection` union
              - …
            - `consent` union
              - …
            - `delayEvent` union
              - …
            - `description` string
            - `disabled` boolean
            - `endpointSchema` union
              - …
            - `id` string
            - `integrationName` string
            - `modes` string[], nullable — Options for altering integration processing behavior. Recommended for advanced use only.
            - `revision` union
              - …
            - `scope` 'INTEGRATION_SCOPE_UNSPECIFIED' | 'INTEGRATION_SCOPE_PUBLIC' | 'INTEGRATION_SCOPE_INTERNAL'
            - `secretRef` string — UUID of secret object for resolving $$secret.KEY$$ patterns anywhere within the integration.
            - `transformStages` union[], nullable
              - …
      - `transform` union — Transform modifies each event before integration-level transforms run.
        - object, nullable
        - ProtobufStreamingpbV1TransformStage
          - `data` union
            - object, nullable
            - ProtobufStreamingpbV1TransformStageData
              - …
          - `desc` string
          - `name` string
          - `outputContentType` string
      - `writeKey` string
  - `modifiedIntegrations` string[], nullable
  - `proposed` union
    - object, nullable
    - ProtobufStreamingpbV1Pipeline
      - `author` string
      - `createdAt` string, date-time, nullable
      - `eventSplit` union — EventSplit runs an expression that returns an array of child events for the same pipeline. The source event is replaced by the emitted children. Each child must set the current pipeline write key, and the forwarder rejects the split if any child emits a different write key or if the event does not match a known ingestion schema like AJS. WARNING: This feature is experimental and will not activate on any live pipelines. And may be removed in the future.
        - object, nullable
        - ProtobufStreamingpbV1EventSplit
          - `expression` union
            - object, nullable
            - ProtobufStreamingpbV1Expression
              - …
      - `filter` union — Filter drops source events before destination processing.
        - object, nullable
        - ProtobufStreamingpbV1PipelineFilter
          - `byLua` union — Will filter any event when the value of the LUA expression returns true If there is an error with the LUA filter the event will NOT be dropped
            - object, nullable
            - ProtobufStreamingpbV1FilterOpLua
              - …
      - `integrations` union[], nullable
        - union
          - object, nullable
          - ProtobufStreamingpbV1Integration
            - `connection` union
              - …
            - `consent` union
              - …
            - `delayEvent` union
              - …
            - `description` string
            - `disabled` boolean
            - `endpointSchema` union
              - …
            - `id` string
            - `integrationName` string
            - `modes` string[], nullable — Options for altering integration processing behavior. Recommended for advanced use only.
            - `revision` union
              - …
            - `scope` 'INTEGRATION_SCOPE_UNSPECIFIED' | 'INTEGRATION_SCOPE_PUBLIC' | 'INTEGRATION_SCOPE_INTERNAL'
            - `secretRef` string — UUID of secret object for resolving $$secret.KEY$$ patterns anywhere within the integration.
            - `transformStages` union[], nullable
              - …
      - `transform` union — Transform modifies each event before integration-level transforms run.
        - object, nullable
        - ProtobufStreamingpbV1TransformStage
          - `data` union
            - object, nullable
            - ProtobufStreamingpbV1TransformStageData
              - …
          - `desc` string
          - `name` string
          - `outputContentType` string
      - `writeKey` string
  - `protoTextDiff` string — The diff as a text representation of protobuf. Similar to JSON but typically more human readable.
  - `removedIntegrations` string[], nullable
  - `scope` 'INTEGRATION_SCOPE_UNSPECIFIED' | 'INTEGRATION_SCOPE_PUBLIC' | 'INTEGRATION_SCOPE_INTERNAL'

## Other responses

- `4XX` — Something is wrong with your request such as missing or invalid data. Correct your request and try again.
- `5XX` — Internal server error. Try again later or reach out to MetaRouter support.

---

[API](https://skmtc.net/metarouter/apis/control-api.md) · [All operations](https://skmtc.net/metarouter/apis/control-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/metarouter/control-api/versions/5afc05bfaaa2/schema)
