Compare a Pipe Sandbox to Production

Read the sandbox-versus-production comparison for a pipe version, grouped into the deploy review categories.

⚠️

BETA - This API is currently in beta testing. If you encounter issues or have feedback, contact our support team.

Before You Begin

🔗 Use the GraphQL Playground to execute the queries in this guide.

➡️ New to GraphQL? Learn how to navigate the Playground with our Playground Basics Guide.

Prerequisites

  1. Authentication: Use a Service Account token (Personal Access Tokens are deprecated).
  2. Permissions: Your token must have Admin (manage) permission on the production pipe this version belongs to. A token that does not returns PERMISSION_DENIED.
  3. An open sandbox: The pipe needs a version from Open a Pipe Sandbox Version. Read the comparison on that production pipe. There is no root field, and you do not pass a version id or a snapshot id.
  4. A snapshot on both sides: both the production pipe and the draft need an uploaded snapshot. See Create a pipe snapshot.

Step 1: Read the Comparison

compareToProduction returns the comparison for this version as one JSON value. The payload is the service hash: a summary plus categories. categories is the eight groups in this order: pipe_configuration, phases_and_fields, conditional_fields, automations, email_templates, connections, webhooks, labels.

query {
  pipe(id: 123) {
    repoVersion {
      compareToProduction(filter: ALL)
    }
  }
}

Input Explanation:

  • pipe.id (required): The production pipe whose open sandbox you are reviewing.
  • filter (optional): ALL returns every category, including unchanged properties. TOUCHED returns only what the comparison touched filter keeps. Omitting the argument and passing an explicit null both behave as ALL.

Sample Response:

{
  "data": {
    "pipe": {
      "repoVersion": {
        "compareToProduction": {
          "summary": {
            "created": 1,
            "updated": 0,
            "deleted": 0,
            "total": 1
          },
          "categories": [
            {
              "key": "pipe_configuration",
              "changes": 1,
              "sections": [
                {
                  "key": "general",
                  "properties": [
                    { "key": "name", "status": "updated" }
                  ]
                }
              ]
            },
            { "key": "phases_and_fields", "changes": 0, "rows": [] },
            { "key": "conditional_fields", "changes": 0, "rows": [] },
            { "key": "automations", "changes": 0, "rows": [] },
            { "key": "email_templates", "changes": 0, "rows": [] },
            { "key": "connections", "changes": 0, "rows": [] },
            { "key": "webhooks", "changes": 0, "rows": [] },
            { "key": "labels", "changes": 0, "rows": [] }
          ]
        }
      }
    }
  }
}

Response Fields

  • summary: Counts of created, updated, and deleted items, plus total.
  • categories: The eight groups listed above, in that order. Each entry has a key, a changes count, and either sections or rows. The sample abbreviates pipe_configuration to one property.

Key Notes

  • One JSON value: compareToProduction returns a single JSON object. It is not a list, so it cannot be paginated.
  • Production pipe is authorized: the token must administer the production pipe this version belongs to. A token that does not receives PERMISSION_DENIED.
  • Missing draft: a version whose sandbox was torn down, or whose clone was never recorded, returns RESOURCE_NOT_FOUND.
  • Service failure: a missing snapshot or an unreadable checkpoint returns PIPEFY_RUNTIME with the comparison service message.
  • Null filter: an explicit null filter behaves as ALL.