GitScrum / Docs

Payload Format

GitScrum webhook payload structure: JSON format, common fields, resource types, and example payloads for all event categories.

All webhook payloads are delivered as JSON via HTTP POST requests. This page documents the structure and common fields.

Request Format

Every webhook delivery is an HTTP POST request with:

  • Content-Type: application/json
  • Body: JSON object containing the resource data

Payload Structure

All payloads follow a consistent wrapper structure:

{
  "data": {
    // Resource fields
  }
}

The data object contains the full resource representation. The fields depend on the event type and corresponding resource.

Task Resource (BoardTaskResource)

Task events (issues.*) deliver payloads using the BoardTask resource format:

{
  "data": {
    "uuid": "abc123-def456-ghi789",
    "title": "Task title",
    "description": "Task description in plain text",
    "type": {
      "title": "Feature",
      "color": "#22C55E"
    },
    "workflow": {
      "title": "In Progress",
      "color": "#3B82F6",
      "position": 1
    },
    "priority": {
      "title": "High",
      "color": "#EF4444"
    },
    "effort": {
      "title": "Medium",
      "color": "#F59E0B"
    },
    "labels": [
      {
        "title": "Frontend",
        "color": "#8B5CF6"
      }
    ],
    "users": [
      {
        "username": "johndoe",
        "name": "John Doe",
        "avatar": "https://..."
      }
    ],
    "config_sprint": {
      "title": "Sprint 14"
    },
    "config_user_story": {
      "title": "User authentication"
    },
    "due_date": "2025-01-15",
    "stats": {
      "checklists": 3,
      "comments": 2,
      "attachments": 1,
      "videos": 0,
      "time_trackings": "02:30:00"
    },
    "created_at": {
      "date_for_humans": "2 hours ago",
      "timezone": "UTC"
    },
    "updated_at": {
      "date_for_humans": "5 minutes ago",
      "timezone": "UTC"
    }
  }
}

Key Fields

FieldTypeDescription
uuidstringUnique identifier for the task
titlestringTask title
descriptionstringTask description
typeobjectTask type with title and color
workflowobjectCurrent Kanban column with title, color, position
priorityobjectPriority level with title and color
effortobjectEffort estimation with title and color
labelsarrayArray of label objects
usersarrayAssigned users
config_sprintobject/nullAssociated sprint
configuserstoryobject/nullAssociated user story
due_datestring/nullDue date in YYYY-MM-DD format
statsobjectCounters for related items
created_atobjectCreation timestamp
updated_atobjectLast update timestamp

Sprint Resource

Sprint events (sprints.*) deliver payloads with sprint details:

{
  "data": {
    "uuid": "sp-abc123-def456",
    "title": "Sprint 14",
    "description": "Authentication module sprint",
    "status": {
      "title": "Open",
      "color": "#22C55E"
    },
    "date_start": "2025-01-06",
    "date_finish": "2025-01-20",
    "time_box": 14,
    "stats": {
      "issues_count": 12,
      "closed_issues_count": 5,
      "effort_total": 34
    },
    "created_at": {
      "date_for_humans": "1 week ago",
      "timezone": "UTC"
    }
  }
}

User Story Resource

User story events (user-stories.*) deliver:

{
  "data": {
    "uuid": "us-abc123-def456",
    "title": "As a user, I want to reset my password",
    "description": "Password reset via email link",
    "priority": "High",
    "acceptance_criteria": "Given a registered user...",
    "votes_count": 3,
    "is_voted": false,
    "created_at": {
      "date_for_humans": "3 days ago",
      "timezone": "UTC"
    }
  }
}

Time Tracking Resource

Time tracking events (time-tracking.issues.*) include the time entry details:

{
  "data": {
    "uuid": "tt-abc123",
    "started_at": "2025-01-10T09:00:00Z",
    "stopped_at": "2025-01-10T11:30:00Z",
    "duration": "02:30:00",
    "comment": "Worked on API integration",
    "billable": true,
    "user": {
      "username": "johndoe",
      "name": "John Doe"
    }
  }
}

Date and Time Fields

All timestamps use a consistent format:

{
  "created_at": {
    "date_for_humans": "2 hours ago",
    "timezone": "UTC"
  }
}
  • dateforhumans — Relative time string
  • timezone — Timezone identifier

Null Values

Fields without data are set to null:

{
  "config_sprint": null,
  "config_user_story": null,
  "due_date": null
}

Always check for null before accessing nested properties.