Overview
Drift occurs when changes are made directly in Zendesk that the GitHub repository does not yet reflect. Configly detects these changes automatically and records them as pending drift. You can then review the pending items, commit them to GitHub with a reason, and manage which configuration types are included in the sync.
List pending drift
GET /v1/github/pending
Returns pending drift commits that have not yet been committed to GitHub. Requires READ_ONLY permission or above.
This endpoint works even if GitHub is not currently connected. Drift is recorded regardless of the connection status, so you can review pending changes at any time.
curl https://api.configly.app/v1/github/pending \ -H "Authorization: Bearer cly_your_key"
{
"data": [
{
"pendingCommitId": "pc_abc123",
"objectType": "trigger",
"objectId": "360001234567",
"objectTitle": "Auto-assign VIP tickets",
"changeType": "modify",
"detectedAt": "2026-04-15T09:22:00.000Z"
},
{
"pendingCommitId": "pc_def456",
"objectType": "automation",
"objectId": "360009876543",
"objectTitle": "Close stale pending tickets",
"changeType": "create",
"detectedAt": "2026-04-15T10:05:00.000Z"
}
],
"meta": {
"total": 2
}
}
Commit drift
POST /v1/github/commit-drift
Commits all pending drift to GitHub with a change reason. Requires READ_WRITE permission.
| Field | Type | Required | Description |
|---|---|---|---|
changeReason |
string | Yes | Audit trail reason (minimum 10 characters) |
perObjectReasons |
object | No | Individual reasons mapped by object identifier, overriding the global reason for specific items |
curl -X POST https://api.configly.app/v1/github/commit-drift \
-H "Authorization: Bearer cly_your_key" \
-H "Content-Type: application/json" \
-d '{
"changeReason": "Syncing manual changes from Q2 routing update",
"perObjectReasons": {
"360001234567": "VIP trigger updated by support lead",
"360009876543": "New automation added for stale ticket cleanup"
}
}'
{
"data": {
"commitSha": "f7e8d9c0b1a2",
"message": "Drift committed successfully"
}
}
Manage exclusions
PUT /v1/github/exclusions
Sets the list of configuration types excluded from GitHub sync. Requires READ_WRITE permission. An empty array means all types are included. Exclusions take effect from the next sync.
| Field | Type | Required | Description |
|---|---|---|---|
excludedTypes |
string[] | Yes | Configuration types to exclude (for example, ["triggers", "automations"]) |
curl -X PUT https://api.configly.app/v1/github/exclusions \
-H "Authorization: Bearer cly_your_key" \
-H "Content-Type: application/json" \
-d '{
"excludedTypes": ["triggers", "automations"]
}'
{
"data": {
"excludedTypes": ["triggers", "automations"],
"message": "Exclusions updated"
}
}
Error codes
| Status | Code | Description |
|---|---|---|
| 400 | VALIDATION_ERROR |
Invalid request body, missing changeReason, or GitHub not connected |
| 401 | INVALID_API_KEY |
Missing or invalid API key |
| 403 | WRITE_SCOPE_REQUIRED |
The API key does not have READ_WRITE permission |
| 502 | GITHUB_ERROR |
An error occurred communicating with GitHub |
For the initial sync, see GitHub status and sync.
Comments
0 comments
Please sign in to leave a comment.