Skip to main content

Webhook events

Bugsee will send notifications for the following events:

All webhook payloads has common structure, like the one below:

{
"id": "4fhs63jd",
"type": "app.created",
"created_on": "2018-01-16T08:18:25.411Z",
"payload": {}
}
FieldTypeDescription
idStringUnique request ID
typeStringEvent type. One of the listed above
created_onStringDate and time of event generation (ISO date format)
payloadObjectEvent data

Depending on the "type" field value, "payload" field will contain various data described below.

 

Events data

app.created

This event is triggered when new application is created in organization. It has the following payload data structure:

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS",
"description": "Our primary iOS application",
"type": "ios",
"subtype": "",
"timezone": 0,
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2017-12-16T12:18:40.387Z",
"created_by": {
"name": "John Smith",
"email": "john.smith@example.com"
}
}
}
ObjectFieldTypeDescription
app
keyStringUnique application key (within organization)
nameStringApplication name
urlStringWeb URL for the application
descriptionStringDescription for the application
typeStringType of the application. One of the following: 'ios', 'android', 'web'
subtypeStringIn case of type is 'android' or 'ios' this field contains the type of framework/platform used to create the actual app. One of 'xamarin', 'cordova', 'react_native', 'unity' or empty in case of native app
timezoneNumberTimezone offset from GMT [-11..11]
created_onStringDate and time when application was created (ISO formatted string)
updated_onStringDate and time when application was last updated (ISO formatted string)
created_byObjectObject with the name and email of the user who created the application

app.updated

This event is triggered when one of the applications is updated in organization (one or more its fields are changed). It has the following payload data structure:

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS",
"description": "Our primary iOS application",
"type": "ios",
"subtype": "",
"timezone": 0,
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2017-12-16T12:18:40.387Z",
"updated_by": {
"name": "John Smith",
"email": "john.smith@example.com"
}
},
"changes": {
"<field_name>": {
"from": "",
"to": ""
}
}
}
ObjectFieldTypeDescription
app
keyStringUnique application key (within organization)
nameStringApplication name
urlStringWeb URL for the application
descriptionStringDescription for the application
typeStringType of the application. One of the following: 'ios', 'android', 'web'
subtypeStringIn case of type is 'android' or 'ios' this field contains the type of framework/platform used to create the actual app. One of 'xamarin', 'cordova', 'react_native', 'unity' or empty in case of native app
timezoneNumberTimezone offset from GMT [-11..11]
created_onStringDate and time when application was created (ISO formatted string)
updated_onStringDate and time when application was last updated (ISO formatted string)
updated_byObjectInformation about the user who updated the application
changes
<field_name>ObjectObject which contains the information about fields that were changed. Each key-value pair in that object denotes the change, where key (<field_name>) is then name of field value is an object with "from" and "to" fields that contain previous and new values correspondingly

app.deleted

This event is triggered when some application is deleted from organization. It has the following payload data structure:

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS",
"description": "Our primary iOS application",
"type": "ios",
"subtype": "",
"timezone": 0,
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2017-12-16T12:18:40.387Z",
"deleted_on": "2017-12-16T12:18:40.387Z",
"deleted_by": {
"name": "John Smith",
"email": "john.smith@example.com"
}
}
}
ObjectFieldTypeDescription
app
keyStringUnique application key (within organization)
nameStringApplication name
urlStringWeb URL for the application
descriptionStringDescription for the application
typeStringType of the application. One of the following: 'ios', 'android', 'web'
subtypeStringIn case of type is 'android' or 'ios' this field contains the type of framework/platform used to create the actual app. One of 'xamarin', 'cordova', 'react_native', 'unity' or empty in case of native app
timezoneNumberTimezone offset from GMT [-11..11]
created_onStringDate and time when application was created (ISO formatted string)
updated_onStringDate and time when application was last updated (ISO formatted string)
deleted_byObjectObject with the name and email of the user who deleted the application

issue.created

This event is triggered when new issue is reported. It has the following payload data structure:

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS"
},
"issue": {
"key": "IOS-123",
"summary": "Something went wrong",
"description": "When app started and sign up screen appeared it missed the 'Sign Up' button",
"type": "bug",
"state": "open",
"labels": [],
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123",
"severity": "medium",
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z",
"recordings": [{
"key": "vmd73hsr",
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123/vmd73hsr",
"environment": {},
"attributes": {
// Session/user attributes
},
"attachments": [{ // "attachments" property can be null if not present
"name": "<Attachment name>",
"url": "<Attachment URL>"
}],
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z"
}],
"created_by": {
"name": "John Smith",
"email": "john.smith@example.com"
}
}
}
ObjectFieldTypeDescription
app
keyStringUnique issue key within application
nameStringApplication name
urlStringWeb URL for application
issue
keyStringUnique issue key within application
summaryStringBrief issue description
descriptionStringDetailed issue description
typeStringIssue type. One of "bug", "crash", "error"
stateStringIssue state. One of "open", "closed"
labelsArray<String>List of text labels issue is marked with
urlStringWeb URL for issue
severityStringIssue severity. One of "unknown", "low", "medium", "high", "critical", "blocker"
created_onStringDate and time when issue was created (ISO formatted string)
updated_onStringDate and time when issue was last updated (ISO formatted string)
recordingsArray<Object>List of recordings in the issue. Refer to recording section for details on Recording object
created_byObjectObject with the name and email of the user who created the issue

issue.updated

This event is triggered when existing issue is updated (one or more fields are changed). It has the following payload data structure:

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS"
},
"issue": {
"key": "IOS-123",
"summary": "Something went wrong",
"description": "When app started and sign up screen appeared it missed the 'Sign Up' button",
"type": "bug",
"state": "open",
"labels": [],
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123",
"severity": "medium",
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z",
"updated_by": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"recordings": []
},
"changes": {
"<field_name>": {
"from": "",
"to": ""
}
}
}
ObjectFieldTypeDescription
app
keyStringUnique issue key within application
nameStringApplication name
urlStringWeb URL for application
issue
keyStringUnique issue key within application
summaryStringBrief issue description
descriptionStringDetailed issue description
typeStringIssue type. One of "bug", "crash", "error"
stateStringIssue state. One of "open", "closed"
labelsArray<String>List of text labels issue is marked with
urlStringWeb URL for issue
severityStringIssue severity. One of "unknown", "low", "medium", "high", "critical", "blocker"
created_onStringDate and time when issue was created (ISO formatted string)
updated_onStringDate and time when issue was last updated (ISO formatted string)
changes
<field_name>ObjectObject which contains the information about fields that were changed. Each key-value pair in that object denotes the change, where key (<field_name>) is then name of field value is an object with "from" and "to" fields that contain previous and new values correspondingly

issue.closed

This event is triggered when issue is closed. It has the following payload data structure:

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS"
},
"issue": {
"key": "IOS-123",
"summary": "Something went wrong",
"description": "When app started and sign up screen appeared it missed the 'Sign Up' button",
"type": "bug",
"state": "closed",
"labels": [],
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123",
"severity": "medium",
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z",
"closed_on": "2018-10-16T08:18:25.411Z",
"closed_by": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"recordings": []
}
}
ObjectFieldTypeDescription
app
keyStringUnique issue key within application
nameStringApplication name
urlStringWeb URL for application
issue
keyStringUnique issue key within application
summaryStringBrief issue description
descriptionStringDetailed issue description
typeStringIssue type. One of "bug", "crash", "error"
stateStringIssue state. One of "open", "closed"
labelsArray<String>List of text labels issue is marked with
urlStringWeb URL for issue
severityStringIssue severity. One of "unknown", "low", "medium", "high", "critical", "blocker"
created_onStringDate and time when issue was created (ISO formatted string)
updated_onStringDate and time when issue was last updated (ISO formatted string)
closed_onStringDate and time when issue was closed (ISO formatted string)
closed_byObjectObject with the name and email of the user who closed the issue

issue.reopened

This event is triggered when issue is re-opened. It has the following payload data structure:

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS"
},
"issue": {
"key": "IOS-123",
"summary": "Something went wrong",
"description": "When app started and sign up screen appeared it missed the 'Sign Up' button",
"type": "bug",
"state": "open",
"labels": [],
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123",
"severity": "medium",
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z",
"closed_on": "2018-10-16T08:18:25.411Z",
"closed_by": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"reopened_on": "2018-10-16T08:18:25.411Z",
"reopened_by": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"recordings": []
}
}
ObjectFieldTypeDescription
app
keyStringUnique issue key within application
nameStringApplication name
urlStringWeb URL for application
issue
keyStringUnique issue key within application
summaryStringBrief issue description
descriptionStringDetailed issue description
typeStringIssue type. One of "bug", "crash", "error"
stateStringIssue state. One of "open", "closed"
labelsArray<String>List of text labels issue is marked with
urlStringWeb URL for issue
severityStringIssue severity. One of "unknown", "low", "medium", "high", "critical", "blocker"
created_onStringDate and time when issue was created (ISO formatted string)
updated_onStringDate and time when issue was last updated (ISO formatted string)
closed_onStringDate and time when issue was closed (ISO formatted string)
closed_byObjectObject with the name and email of the user who closed the issue
reopened_onStringDate and time when issue was closed (ISO formatted string)
reopened_byObjectObject with the name and email of the user who re-opened the issue

issue.regressed

This event is triggered when regression is detected (closed issue is reported again in/after fixed version). It has the following payload data structure:

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS"
},
"issue": {
"key": "IOS-123",
"summary": "Something went wrong",
"description": "When app started and sign up screen appeared it missed the 'Sign Up' button",
"type": "crash",
"state": "open",
"labels": [],
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123",
"severity": "blocker",
"created_on": "2018-10-16T08:18:25.411Z",
"created_by": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"updated_on": "2018-10-16T08:18:25.411Z",
"recordings": [{
"key": "vmd73hsr",
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123/vmd73hsr",
"environment": {},
"attributes": {
// Session/user attributes
},
"attachments": [{ // "attachments" property can be null if not present
"name": "<Attachment name>",
"url": "<Attachment URL>"
}],
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z"
}],
"closed_on": "2018-10-16T08:18:25.411Z",
"regressed_on": "2018-10-16T08:18:25.411Z"
}
}
ObjectFieldTypeDescription
app
keyStringUnique issue key within application
nameStringApplication name
urlStringWeb URL for application
issue
keyStringUnique issue key within application
summaryStringBrief issue description
descriptionStringDetailed issue description
typeStringIssue type. One of "bug", "crash", "error"
stateStringIssue state. One of "open", "closed"
labelsArray<String>List of text labels issue is marked with
urlStringWeb URL for issue
severityStringIssue severity. One of "unknown", "low", "medium", "high", "critical", "blocker"
created_onStringDate and time when issue was created (ISO formatted string)
updated_onStringDate and time when issue was last updated (ISO formatted string)
recordingsArray<Object>List of recordings in the issue. Usually contains one last recording from issue that caused regression. Refer to recording section for details on Recording object
closed_onStringDate and time when issue was closed (ISO formatted string)
closed_byObjectObject with the name and email of the user who closed the issue
regressed_onStringDate and time when issue regression was detected (ISO formatted string)

issue.deleted

This event is triggered when new issue is deleted. It has the following payload data structure:

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS"
},
"issue": {
"key": "IOS-123",
"summary": "Something went wrong",
"description": "When app started and sign up screen appeared it missed the 'Sign Up' button",
"type": "bug",
"state": "open",
"labels": [],
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123",
"severity": "medium",
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z",
"deleted_on": "2018-10-16T08:18:25.411Z",
"deleted_by": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"recordings": []
}
}
ObjectFieldTypeDescription
app
keyStringUnique issue key within application
nameStringApplication name
urlStringWeb URL for application
issue
keyStringUnique issue key within application
summaryStringBrief issue description
descriptionStringDetailed issue description
typeStringIssue type. One of "bug", "crash", "error"
stateStringIssue state. One of "open", "closed"
labelsArray<String>List of text labels issue is marked with
urlStringWeb URL for issue
severityStringIssue severity. One of "unknown", "low", "medium", "high", "critical", "blocker"
created_onStringDate and time when issue was created (ISO formatted string)
updated_onStringDate and time when issue was last updated (ISO formatted string)
deleted_onStringDate and time when issue was deleted (ISO formatted string)
deleted_byObjectObject with the name and email of the user who deleted the issue

issue.comment

This event is triggered when someone add comment to issue. It has the following payload data structure:

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS"
},
"issue": {
"key": "IOS-123",
"summary": "Something went wrong",
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123"
},
"comment": {
"created_by": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"text": "I am on it! Will fix asap!"
}
}
ObjectFieldTypeDescription
app
keyStringUnique issue key within application
nameStringApplication name
urlStringWeb URL for application
issue
keyStringUnique issue key within application
summaryStringBrief issue description
urlStringWeb URL for issue
comment
created_byObjectObject with the name and email of the user who created the comment
textStringComment message

user.created

This event is triggered when new user is added to the organization. It has the following payload data structure:

{
"user": {
"name": "Amy Jameson",
"email": "amy.jameson@example.com",
"admin": false,
"disabled": false,
"country": "us",
"timezone": 0,
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z",
"created_by": {
"name": "John Smith",
"email": "john.smith@example.com"
}
}
}
ObjectFieldTypeDescription
user
nameStringFull user name
emailStringEmail address
adminBooleanFlag that indicates whether user is admin or not
disabledBooleanFlag that indicates whether account is disabled or not
countryStringCountry code for the user (may not be accurate because is guessed from IP)
timezoneNumberTimezone offset from GMT
created_onStringDate and time when account was created (ISO formatted string)
updated_onStringDate and time when account was last updated (ISO formatted string)
created_byObjectObject with the name and email of the user who created the account (usually this the one who sends an invite)

user.updated

This event is triggered when user account changes. It has the following payload data structure:

{
"user": {
"name": "Amy Jameson",
"email": "amy.jameson@example.com",
"admin": false,
"disabled": false,
"country": "us",
"timezone": 0,
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z",
"created_by": {
"name": "John Smith",
"email": "john.smith@example.com"
}
},
"changes": {
"<field_name>": {
"from": "",
"to": ""
}
}
}
ObjectFieldTypeDescription
user
nameStringFull user name
emailStringEmail address
adminBooleanFlag that indicates whether user is admin or not
disabledBooleanFlag that indicates whether account is disabled or not
countryStringCountry code for the user (may not be accurate because is guessed from IP)
timezoneNumberTimezone offset from GMT
created_onStringDate and time when account was created (ISO formatted string)
updated_onStringDate and time when account was last updated (ISO formatted string)
changes
<field_name>ObjectObject which contains the information about fields that were changed. Each key-value pair in that object denotes the change, where key (<field_name>) is then name of field value is an object with "from" and "to" fields that contain previous and new values correspondingly

user.deleted

This event is triggered when new user is deleted from organization. It has the following payload data structure:

{
"user": {
"name": "Amy Jameson",
"email": "amy.jameson@example.com",
"admin": false,
"disabled": false,
"country": "us",
"timezone": 0,
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z",
"deleted_by": {
"name": "John Smith",
"email": "john.smith@example.com"
}
}
}
ObjectFieldTypeDescription
user
nameStringFull user name
emailStringEmail address
adminBooleanFlag that indicates whether user is admin or not
disabledBooleanFlag that indicates whether account is disabled or not
countryStringCountry code for the user (may not be accurate because is guessed from IP)
timezoneNumberTimezone offset from GMT
created_onStringDate and time when account was created (ISO formatted string)
updated_onStringDate and time when account was last updated (ISO formatted string)
deleted_byObjectObject with the name and email of the user who deleted the account

 

unsymbolicated.created

This event is triggered when issue is marked as "missing symbols".

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS"
},
"issue": {
"key": "IOS-123",
"summary": "Something went wrong",
"description": "When app started and sign up screen appeared it missed the 'Sign Up' button",
"type": "bug",
"state": "open",
"labels": [],
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123",
"severity": "medium",
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z",
"recordings": [{
"key": "vmd73hsr",
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123/vmd73hsr",
"environment": {},
"attributes": {
// Session/user attributes
},
"attachments": [{ // "attachments" property can be null if not present
"name": "<Attachment name>",
"url": "<Attachment URL>"
}],
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z"
}],
"created_by": {
"name": "John Smith",
"email": "john.smith@example.com"
}
}
}
ObjectFieldTypeDescription
app
keyStringUnique issue key within application
nameStringApplication name
urlStringWeb URL for application
issue
keyStringUnique issue key within application
summaryStringBrief issue description
descriptionStringDetailed issue description
typeStringIssue type. One of "bug", "crash", "error"
stateStringIssue state. One of "open", "closed"
labelsArray<String>List of text labels issue is marked with
urlStringWeb URL for issue
severityStringIssue severity. One of "unknown", "low", "medium", "high", "critical", "blocker"
created_onStringDate and time when issue was created (ISO formatted string)
updated_onStringDate and time when issue was last updated (ISO formatted string)
recordingsArray<Object>List of recordings in the issue. Refer to recording section for details on Recording object
created_byObjectObject with the name and email of the user who created the issue

feedback.message.in

This event is triggered when new feedback message is received from end user device (phone, tablet, etc)

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS"
},
"thread": {
"state": "open",
"user": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"device_id": "D11B5769-781B-44B0-9CB7-B2D8D9C7A831"
},
"message": {
"messages": [{
"text": "This is my message!",
"created_on": "2018-10-16T08:18:25.411Z"
}],
"user": {
"name": "John Smith",
"email": "john.smith@example.com"
}
}
}
ObjectFieldTypeDescription
app
keyStringUnique issue key within application
nameStringApplication name
urlStringWeb URL for application
thread
stateStringThread state. Either "open" or "closed"
userObjectObject with the name and email of the user who created/started the thread
device_idStringUnique identifier for end-user device
message
messagesArrayArray of objects of ({ "text": "", "created_on": "" }) that represent actual messages
userObjectObject with the name and email of the user who sent the message(s)
device_idStringUnique identifier for end-user device

feedback.message.out

This event is triggered when new feedback message is sent to the end user device (phone, tablet, etc) from dashboard

{
"app": {
"key": "IOS",
"name": "iOS application",
"url": "https://app.bugsee.com/#/apps/IOS"
},
"thread": {
"state": "open",
"user": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"device_id": "D11B5769-781B-44B0-9CB7-B2D8D9C7A831"
},
"message": {
"messages": [{
"text": "This is my message!",
"created_on": "2018-10-16T08:18:25.411Z"
}],
"user": {
"name": "John Smith",
"email": "john.smith@example.com"
}
}
}
ObjectFieldTypeDescription
app
keyStringUnique issue key within application
nameStringApplication name
urlStringWeb URL for application
thread
stateStringThread state. Either "open" or "closed"
userObjectObject with the name and email of the user who created/started the thread
device_idStringUnique identifier for end-user device
message
messagesArrayArray of objects of ({ "text": "", "created_on": "" }) that represent actual messages
userObjectObject with the name and email of the user who sent the message(s)
device_idStringUnique identifier for end-user device

build.created

This event fires twice during a build's lifecycle, distinguished by the size_analysis_status field on the current build:

  1. Build registered (size_analysis_status: "unavailable") — fires immediately when the Bugsee Gradle plugin or BugseeAgent registers a new build without requesting an artefact upload (the new default, "build info only" path). The payload carries the build's metadata (uuid, package_id, version, build, VCS, build_metadata, artefact_size) but no size analysis fields. There's no baseline so previous is absent.

  2. Size analysis complete (size_analysis_status: "ready") — fires when the optional size analysis upload finishes processing on the server. The payload additionally carries size_summary, size_diff_summary, and (when available) the previous build for comparison.

Consumers that only want post-analysis notifications can branch on current.size_analysis_status === "ready". Consumers that want to be notified about every release archive (including build-info-only) read the event unconditionally.

Build-info-only payload (size_analysis_status: "unavailable") — sent at registration when the client opted out of the artefact upload. size_summary / size_diff_summary / previous are all absent:

{
"app": {
"key": "ANDROID",
"name": "Android application",
"url": "https://app.bugsee.com/#/apps/ANDROID"
},
"build": {
"current": {
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"package_id": "com.example.app",
"version": "2.4.1",
"build": "153",
"build_configuration": "release",
"format": "aab",
"size_analysis_status": "unavailable",
"url": "https://app.bugsee.com/#/apps/ANDROID/builds/5b7f2a1e9f1b2c0001a3d5b2",
"artifact_size": 35241984,
"vcs": {
"commit_sha": "a1b2c3d4e5f6789012345678901234567890abcd",
"branch": "main",
"provider": "github",
"repo": "acme/example-app"
},
"build_metadata": {
"machine": "github-actions:runner-2",
"plugin_version": "7.0.0",
"build_system_version": "8.6",
"build_sdk_version": "36"
},
"created_on": "2026-04-18T12:34:56.000Z",
"updated_on": "2026-04-18T12:34:56.000Z"
}
}
}

Size-analysis-ready payload (size_analysis_status: "ready") — sent when the worker completes the analysis; carries the full size data plus the comparison baseline when available:

{
"app": {
"key": "ANDROID",
"name": "Android application",
"url": "https://app.bugsee.com/#/apps/ANDROID"
},
"build": {
"current": {
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"package_id": "com.example.app",
"version": "2.4.1",
"build": "153",
"build_configuration": "release",
"format": "aab",
"size_analysis_status": "ready",
"url": "https://app.bugsee.com/#/apps/ANDROID/builds/5b7f2a1e9f1b2c0001a3d5b2",
"artifact_size": 35241984,
"size_summary": {
"schema_version": 3,
"analysis_version": "3.0.0",
"analysis_mode": "aab",
"download_size": 35241984,
"install_size": 58720256,
"install_size_on_device": 60817408,
"install_block_size": 4096
},
"size_diff_summary": {
"trend": "regression",
"download_size_delta": 1048576,
"download_size_pct": 3.0,
"install_size_delta": 2097152,
"install_size_pct": 3.7,
"default_variant": {"abi": "arm64-v8a", "density": "xxhdpi", "locale": null},
"default_variant_unmatched": false,
"raw_download_size_delta": 1572864,
"raw_install_size_delta": 3145728,
"raw_trend": "regression",
"regressed_variants_count": 7,
"any_variant_regressed": true
},
"vcs": {
"commit_sha": "a1b2c3d4e5f6789012345678901234567890abcd",
"base_sha": "9876543210fedcba9876543210fedcba98765432",
"branch": "main",
"base_branch": "main",
"pr_number": 42,
"provider": "github",
"repo": "acme/example-app"
},
"created_on": "2026-04-18T12:34:56.000Z",
"updated_on": "2026-04-18T12:36:22.000Z"
},
"previous": {
"uuid": "98765432-10fe-dcba-9876-543210fedcba",
"package_id": "com.example.app",
"version": "2.4.0",
"build": "148",
"build_configuration": "release",
"format": "aab",
"size_analysis_status": "ready",
"url": "https://app.bugsee.com/#/apps/ANDROID/builds/5b7f1a0e9f1b2c0001a3d5a1",
"artifact_size": 34193408,
"size_summary": {
"download_size": 34193408,
"install_size": 56623104
},
"vcs": {
"commit_sha": "9876543210fedcba9876543210fedcba98765432",
"branch": "main",
"provider": "github",
"repo": "acme/example-app"
},
"created_on": "2026-04-11T09:18:01.000Z",
"updated_on": "2026-04-11T09:19:33.000Z"
}
}
}
ObjectFieldTypeDescription
app
keyStringUnique application key (within organization)
nameStringApplication name
urlStringWeb URL for the application
build.current
uuidStringBuild UUID injected into the manifest / Info.plist by the build-time agent
package_idStringAndroid applicationId / iOS bundleIdentifier
versionStringversionName / CFBundleShortVersionString
buildStringversionCode / CFBundleVersion
build_configurationStringVariant / configuration name (e.g. release, freeRelease)
formatStringaab, apk, or ipa
size_analysis_statusStringunavailable (build-info only), uploading / processing (in flight), ready (analysis complete), or failed
urlStringWeb URL for the build in the Bugsee dashboard
artifact_sizeNumberRaw artefact byte count captured at upload time
size_summaryObjectScalar size aggregates — see Size summary. Absent when size_analysis_status !== "ready"
size_diff_summaryObjectDiff vs the previous build — see Size diff summary. Absent when no baseline existed or analysis hasn't run
vcsObjectCommit context resolved at upload time (commit_sha, branch, base_branch, pr_number, provider, repo). May be absent when the build was produced from a host without a git context
created_onStringDate and time the build record was created (ISO formatted string)
updated_onStringDate and time the build record was last updated (ISO formatted string)
build.previousObjectSame shape as build.current. Absent on the first build for this (package_id, build_configuration) tuple and on the build-info-only trigger

build.deleted

This event is triggered when a build record is deleted from the dashboard (manually or via API). It has the following payload data structure:

{
"app": {
"key": "ANDROID",
"name": "Android application",
"url": "https://app.bugsee.com/#/apps/ANDROID"
},
"build": {
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"package_id": "com.example.app",
"version": "2.4.1",
"build": "153",
"build_configuration": "release",
"format": "aab",
"size_analysis_status": "ready",
"url": "https://app.bugsee.com/#/apps/ANDROID/builds/5b7f2a1e9f1b2c0001a3d5b2",
"created_on": "2026-04-18T12:34:56.000Z",
"updated_on": "2026-04-18T12:36:22.000Z"
},
"deleted_by": {
"name": "John Smith",
"email": "john.smith@example.com"
}
}
ObjectFieldTypeDescription
app
keyStringUnique application key (within organization)
nameStringApplication name
urlStringWeb URL for the application
build
uuidStringBuild UUID
package_idStringAndroid applicationId / iOS bundleIdentifier
versionStringversionName / CFBundleShortVersionString
buildStringversionCode / CFBundleVersion
build_configurationStringVariant / configuration name
formatStringaab, apk, or ipa
size_analysis_statusStringStatus the build had at the time of deletion
urlStringWeb URL for the build in the Bugsee dashboard
created_onStringDate and time the build record was created (ISO formatted string)
updated_onStringDate and time the build record was last updated (ISO formatted string)
deleted_byObjectObject with the name and email of the user who deleted the build. Absent for API-initiated deletions without a user context

Common data structures

Size summary

FieldTypeDescription
schema_versionNumberSchema version of the size analysis document (currently 3)
analysis_versionStringWorker version that produced the analysis
analysis_modeStringapk for raw APK/AAB uploads, aab_universal_via_bundletool when the worker expanded an AAB through bundletool, ipa for iOS bundles
download_sizeNumberTotal download size in bytes (compressed) — the raw bundle as uploaded
install_sizeNumberTotal install size in bytes (uncompressed) — the raw bundle as uploaded
install_size_on_deviceNumberInstall size rounded up to the filesystem block size — what the raw bundle occupies on the device
install_block_sizeNumberFilesystem block size used for install_size_on_device rounding (typically 4096 on Android; iOS bundles may omit this field)

The full per-variant breakdown (shipped_variants, shipped_default, strippable_*) is not included in the webhook scalar summary — those fields live in the size-analysis blob on S3 (worst case ~1,700 variant entries on an app translated into every Android-supported locale) and would bloat the webhook payload.

Size diff summary

The headline trend / *_delta / *_pct fields reflect the default shipped variant — the AAB slice a representative modern device would actually download from Google Play (arm64-v8a / xxhdpi / base locale by default). This means VCS status checks, email notifications, and the build-list regression indicator fire on user-visible changes rather than debug-symbol churn or all-ABIs-summed bundle deltas.

The raw-bundle framing (full AAB delta regardless of splits) is preserved separately as raw_* fields for callers that still want the full-upload view — infra dashboards watching upload-side storage, etc.

FieldTypeDescription
trendStringOne of regression, improvement, unchanged, reflecting the default shipped variant's install-size delta. Drives the dashboard's trend indicator, VCS status-check state, and the build-created notification email
download_size_deltaNumberSigned byte delta vs. the baseline for the default shipped variant (negative = smaller)
download_size_pctNumberSigned percentage delta vs. the baseline
install_size_deltaNumberSigned byte delta vs. the baseline
install_size_pctNumberSigned percentage delta vs. the baseline
default_variantObject or nullThe (abi, density, locale) triple the headline metrics are computed against. null only when the diff falls back to raw totals — see default_variant_unmatched
default_variant_unmatchedBooleantrue when no (abi, density, locale) triple is common to both builds (e.g. the AAB fundamentally changed shape — pure-Java → native — between uploads). The headline fields then reflect the raw bundle delta as a fallback
raw_download_size_deltaNumberFull-bundle delta before split-awareness. Tracks changes to the AAB's total upload size regardless of which bytes actually reach devices
raw_install_size_deltaNumberFull-bundle install-size delta (uncompressed)
raw_trendStringFull-bundle trend. Can disagree with trend when the shipped variant moved in the opposite direction to the raw bundle
regressed_variants_countNumberCount of (abi, density, locale) triples whose install size regressed between base and head. Lets the mailer / webhook surface "N of M variants regressed" without walking the full per-variant table
any_variant_regressedBooleantrue iff regressed_variants_count > 0

shipped_variants_diff — the full per-variant breakdown — exists only in the S3 size-analysis blob, not in the webhook scalar summary, for the same payload-size reason as shipped_variants above.

Recording

{
"key": "vmd73hsr",
"url": "https://app.bugsee.com/#/apps/IOS/issues/IOS-123/vmd73hsr",
"environment": {},
"created_on": "2018-10-16T08:18:25.411Z",
"updated_on": "2018-10-16T08:18:25.411Z"
}
FieldTypeDescription
keyStringUnique key for the recording
urlStringWeb URL for the recording
environmentObjectObject that contains all the environment information. Refer to environment section for more details
created_onStringDate and time when recording was created (ISO formatted string)
updated_onStringDate and time when recording was last updated (ISO formatted string)

Environment

{
"app": {
"package_id": "com.example.MyCoolApp",
"version": "1.0.0",
"build": "1",
"installer": "",
"debuggable": false,
"debugger_attached": false,
"instant": false,
"extension": false,
"locale": "en_US",
"build_type": "com.google.android.instantapps.supervisor",
"build_flavor": "",
"debug": false,
"distribution": "",
"mdm_config": false
},
"platform": {
"type": "android",
"version": "24",
"release_name": "7.0",
"build": "",
"jailbreak": false,
"memory_total": 0,
"memory_free": 0,
"disk_total": 0,
"disk_free": 0,
"os": "",
"arch": "",
"locale": "",
"locale_extended_info": {
"format_locale" : "en_US",
"display_locale" : "en_US",
"chosen_locales" : [
"en_US"
]
},
"supported_abis": [
"arm64-v8a",
"armeabi-v7a",
"armeabi"
]
},
"hardware": {
"manufacturer": "samsung",
"model": "SM-G925F",
"model_name": "SM-G925F",
"android_id": "",
"device_id": "",
"name": "",
"battery": 0,
"charging": false,
"low_power_mode": "",
"wifi": "",
"carrier": "",
"network": {
"name": "",
"mcc": "",
"mnc": "",
"country": ""
},
"screen": {
"dpiX": 0,
"dpiY": 0,
"xdpi" : 580.570983886719,
"ydpi" : 580.570983886719,
"density" : 4,
"scaled_density" : 4,
"density_dpi" : 640,
"density_dpi_name" : "xxxdpi",
"height" : 640,
"width" : 360,
"scale" : 4
}
}
}