Export Pipe Audit Logs Report

How to export a pipe audit logs report using the exportPipeAuditLogsReport GraphQL mutation

Overview

The exportPipeAuditLogsReport mutation creates an asynchronous export job that fetches pipe audit logs and delivers a downloadable report file. You can filter by activity type, date range, and user, and choose between CSV and JSONL output formats.

The export is delivered in one of two ways:

  • Email (default): a download link is sent to the requesting user's email once processing is complete.
  • Webhook: the signed download URL is made available via the auditLogExportRequest query as soon as processing is complete, allowing programmatic polling.

Prerequisites

  1. Authentication: This mutation requires the id_token from your Pipefy session cookie to authenticate requests to the activities service.
  2. Permissions: The authenticated user must have the pipe admin role on the target pipe.
  3. Pipe UUID: You must know the UUID of the pipe you want to export logs for. See Get resource IDs.

Mutation Reference

Full signature

mutation ExportPipeAuditLogsReport(
  $pipeUuid: ID!
  $auditLogType: AuditLogTypeEnum
  $outputFormat: AuditLogOutputFormat
  $deliveryMethod: AuditLogDeliveryMethod
  $searchTerm: String
  $filterDateFrom: DateTime
  $filterDateTo: DateTime
) {
  exportPipeAuditLogsReport(input: {
    pipeUuid: $pipeUuid
    auditLogType: $auditLogType
    outputFormat: $outputFormat
    deliveryMethod: $deliveryMethod
    searchTerm: $searchTerm
    filterDateFrom: $filterDateFrom
    filterDateTo: $filterDateTo
  }) {
    success
    correlationId
  }
}

Arguments

ArgumentTypeRequiredDefaultDescription
pipeUuidIDYesUUID of the pipe
auditLogTypeAuditLogTypeEnumNonull (all)Scope export to a specific activity type
outputFormatAuditLogOutputFormatNoCSVFile format for the exported report
deliveryMethodAuditLogDeliveryMethodNoEMAILHow the export is delivered
searchTermStringNo""Filter logs by user name or email (case-insensitive)
filterDateFromDateTimeNo30 days ago (beginning of day)Start of the date range (inclusive)
filterDateToDateTimeNoYesterday (end of day)End of the date range (inclusive)

AuditLogTypeEnum values

ValueDescription
card_activityActivities related to card execution
configuration_changesActivities related to pipe configuration changes
(omitted)All activity types

AuditLogOutputFormat values

ValueDescription
CSVComma-separated values with UTF-8 BOM header
JSONLJSON Lines — one JSON object per line ({ "user": ..., "action": ..., "date": ... })

AuditLogDeliveryMethod values

ValueDescription
EMAILA download link is sent to the user's email when the export is ready
WEBHOOKThe signed download URL is available via the auditLogExportRequest query

Response fields

FieldTypeDescription
successBooleantrue if the export job was created successfully
correlationIdIDUnique identifier for this export request. Use it to poll the auditLogExportRequest query when deliveryMethod is WEBHOOK

Business Rules

Date range

  • filterDateFrom is normalized to the beginning of the day (00:00:00).
  • filterDateTo is normalized to the end of the day (23:59:59).
  • filterDateTo must be after filterDateFrom.
  • filterDateTo cannot be in the future.
  • The maximum range between filterDateFrom and filterDateTo is 30 days.
  • filterDateFrom cannot be older than 180 days from today.

Rate limit

Each user can create at most 6 export requests per day. Exceeding this limit returns a UsageLimitExceededError. See the API reference for details.


Usage Examples

Minimal — email delivery, all activities, last 30 days

mutation {
  exportPipeAuditLogsReport(input: {
    pipeUuid: "87654321-4321-4321-4321-cba987654321"
  }) {
    success
    correlationId
  }
}
{
  "data": {
    "exportPipeAuditLogsReport": {
      "success": true,
      "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
    }
  }
}

Filter by activity type and date range

mutation ExportPipeAuditLogsReport(
  $pipeUuid: ID!
  $auditLogType: AuditLogTypeEnum
  $filterDateFrom: DateTime
  $filterDateTo: DateTime
) {
  exportPipeAuditLogsReport(input: {
    pipeUuid: $pipeUuid
    auditLogType: $auditLogType
    filterDateFrom: $filterDateFrom
    filterDateTo: $filterDateTo
  }) {
    success
    correlationId
  }
}
{
  "pipeUuid": "87654321-4321-4321-4321-cba987654321",
  "auditLogType": "card_activity",
  "filterDateFrom": "2025-03-01T00:00:00Z",
  "filterDateTo": "2025-03-30T23:59:59Z"
}

Webhook delivery with JSONL format

When deliveryMethod is WEBHOOK, the signed download URL is not sent by email. Instead, poll the auditLogExportRequest query using the correlationId returned by the mutation.

Step 1 — Request the export

mutation ExportPipeAuditLogsReport(
  $pipeUuid: ID!
  $outputFormat: AuditLogOutputFormat
  $deliveryMethod: AuditLogDeliveryMethod
) {
  exportPipeAuditLogsReport(input: {
    pipeUuid: $pipeUuid
    outputFormat: $outputFormat
    deliveryMethod: $deliveryMethod
  }) {
    success
    correlationId
  }
}
{
  "pipeUuid": "87654321-4321-4321-4321-cba987654321",
  "outputFormat": "JSONL",
  "deliveryMethod": "WEBHOOK"
}

Step 2 — Poll for status and signed URL

query AuditLogExportRequest($correlationId: ID!) {
  auditLogExportRequest(correlationId: $correlationId) {
    status
    signedUrl
    signedUrlExpiresAt
  }
}
{
  "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Poll until status is finished. The signedUrl field will contain the pre-signed download URL, valid for up to 7 days.


Export File Structure

Each export contains three columns regardless of the output format:

ColumnDescription
userName of the user who performed the action
actionDescription of the action
dateTimestamp of the action (ISO 8601)

CSV example

User,Action,Date
John Doe,Created card "Q3 Review",2025-03-15T14:32:00Z
Jane Smith,Moved card to "Done",2025-03-15T15:10:00Z

JSONL example

{"user":"John Doe","action":"Created card \"Q3 Review\"","date":"2025-03-15T14:32:00Z"}
{"user":"Jane Smith","action":"Moved card to \"Done\"","date":"2025-03-15T15:10:00Z"}

Error Handling

Common error scenarios

ScenarioError typeMessage
User is not a pipe adminPermission deniedPermission denied
filterDateTo before filterDateFromInvalidInputErrorfilter_date_to must be after filter_date_from
Date range exceeds 30 daysInvalidInputErrordate range cannot exceed 30 days
filterDateFrom older than 180 daysInvalidInputErrorfilter_date_from cannot be older than 180 days
filterDateTo in the futureInvalidInputErrorfilter_date_to cannot be in the future
Daily request limit reachedUsageLimitExceededErrorYou've reached the daily limit for audit log export requests...

Error response shape

{
  "data": {
    "exportPipeAuditLogsReport": null
  },
  "errors": [
    {
      "message": "filter_date_to must be after filter_date_from",
      "locations": [{ "line": 2, "column": 3 }],
      "path": ["exportPipeAuditLogsReport"]
    }
  ]
}