Skip to main content

Understanding Webhooks

When a webhook URL is specified for an automation, a POST is made every time a build completes. Information is included about the build, as well as the user who triggered it and the commit that it was built from.

Webhook Body#

Below are example webhook json payloads:

Package Automation Webhook#

{    "state": "success",    "automationId": 777,    "automation": {        "id": 777,        "buidType": "debug",        "environmentName": "staging",        "nativeConfigName": "staging",        "created": "2018-08-24T14:49:01.462549+00:00",        "creatorId": 10000023,        "name": "my-awesome-automation",        "creator": {            "name": "Ionitron",            "picture": "https://www.ionicjs.com/picture",            "avatars": {                "small": "https://www.ionicjs.com/picture-sm",                "medium": "https://www.ionicjs.com/picture-md",                "large": "https://www.ionicjs.com/picture-lg"            },            "username": "ionic"        },        "platform": "android",        "profile": "debug"    },    "environmentName": "staging",    "id": "2216322b-35be-4af2-aaad-2b4e57354f88",    "type": "debug",    "created": "2018-08-24T14:49:01.462549+00:00",    "started": "2018-08-24T14:49:08.556804+00:00",    "finished": "2018-08-24T14:56:45.986317+00:00",    "downloadUrl": "https://www.ionicjs.com/one-awesome-app",    "artifacts": [        {            "url": "https://www.ionicjs.com/one-awesome-app.aab",            "name": "one-awesome-app.aab",            "artifactType": "AAB"        },        {            "url": "https://www.ionicjs.com/one-awesome-app.apk",            "name": "one-awesome-app.apk",            "artifactType": "APK"        }    ],    "profile": "debug",    "buildInfo": {        "id": 777,        "state": "success",        "job_type": "package-android"    },    "appId": "abcd1234",    "platform": "android",    "app": {        "slug": "awesomeapp",        "org": null,        "name": "Awesome App",        "owner": {            "name": "Ionitron",            "picture": "https://www.ionicjs.com/picture",            "avatars": {                "small": "https://www.ionicjs.com/picture-sm",                "medium": "https://www.ionicjs.com/picture-md",                "large": "https://www.ionicjs.com/picture-lg"            },            "username": "ionic"        },        "id": "abcd1234",        "updated": "2018-03-22T02:12:21.183081+00:00",        "created": "2018-03-13T14:20:46.628090+00:00",        "icon": "https://www.ionicjs.com/picture"    },    "commit": {        "user": {            "name": "Ionitron",            "picture": "https://www.ionicjs.com/picture",            "avatars": {                "small": "https://www.ionicjs.com/picture-sm",                "medium": "https://www.ionicjs.com/picture-md",                "large": "https://www.ionicjs.com/picture-lg"            },            "htmlUrl": "https://github.com/ionitron",            "profile": "https://github.com/ionitron",            "username": "ionitron"        },        "sha": "e900ae1863482df4f9c24ee759d15a9250de77a7",        "note": "github 🦊",        "beforeSha": "5161d6d939409f94d33c8cc549c4c89a861d0042",        "uuid": "74797ffe-8ee2-4ab7-9e1a-3a1e5969f7bb",        "userId": 1000000,        "refType": "branch",        "ref": "different-branch",        "appId": "abcd1234",        "repositoryId": 777,        "created": "2018-08-24T02:51:20.477835+00:00"    }}

Web Automation Webhook#

{    "started": "2018-08-24T14:49:08.556804+00:00",    "state": "success",    "automationId": 777,    "automation": {        "id": 777,        "created": "2018-08-24T14:49:01.462549+00:00",        "creatorId": 10000023,        "environmentName": "staging",        "name": "my-awesome-automation",        "channel": {            "name": "threeve",            "updated": "2018-02-13T20:35:46.486541Z+00:00",            "id": "24464de6-6684-46f4-831b-f66c379db096",            "created": "2018-02-09T21:38:19.086808Z+00:00"        },        "creator": {            "name": "Ionitron",            "picture": "https://www.ionicjs.com/picture",            "avatars": {                "small": "https://www.ionicjs.com/picture-sm",                "medium": "https://www.ionicjs.com/picture-md",                "large": "https://www.ionicjs.com/picture-lg"            },            "username": "ionic"        }    },    "environmentName": "staging",    "id": "2216322b-35be-4af2-aaad-2b4e57354f88",    "created": "2018-08-24T14:49:01.462549+00:00",    "finished": "2018-08-24T14:56:45.986317+00:00",    "buildInfo": {        "id": 101,        "state": "success",        "job_type": "snapshot"    },    "appId": "abcd1234",    "app": {        "slug": "awesomeapp",        "org": null,        "name": "Awesome App",        "owner": {            "name": "Ionitron",            "picture": "https://www.ionicjs.com/picture",            "avatars": {                "small": "https://www.ionicjs.com/picture-sm",                "medium": "https://www.ionicjs.com/picture-md",                "large": "https://www.ionicjs.com/picture-lg"            },            "username": "ionic"        },        "id": "abcd1234",        "updated": "2018-03-22T02:12:21.183081+00:00",        "created": "2018-03-13T14:20:46.628090+00:00",        "icon": "https://www.ionicjs.com/picture"    },    "commit": {        "user": {            "name": "Ionitron",            "picture": "https://www.ionicjs.com/picture",            "avatars": {                "small": "https://www.ionicjs.com/picture-sm",                "medium": "https://www.ionicjs.com/picture-md",                "large": "https://www.ionicjs.com/picture-lg"            },            "htmlUrl": "https://github.com/ionitron",            "profile": "https://github.com/ionitron",            "username": "ionitron"        },        "sha": "e900ae1863482df4f9c24ee759d15a9250de77a7",        "note": "github 🦊",        "beforeSha": "5161d6d939409f94d33c8cc549c4c89a861d0042",        "uuid": "74797ffe-8ee2-4ab7-9e1a-3a1e5969f7bb",        "userId": 1000000,        "refType": "branch",        "ref": "different-branch",        "appId": "abcd1234",        "repositoryId": 777,        "created": "2018-08-24T02:51:20.477835+00:00"    },    "artifacts": [        {          "url": "https://www.ionicjs.com/one-awesome-app.zip",          "name": "one-awesome-app.zip",          "artifactType": "WWW_ZIP"        }    ]}

Responding to Webhooks#

The server will automatically attempt a retry if the webhook request does not receive a status code of 200.

Retries#

The server will retry the hook up to 5 times with an increasing delay between attempts (up to a delay of one hour) in the case where it does not receive a 200 response code.

Signed Download URLs (Package Automations Only)#

The downloadUrl field in the webhook allows only this specific build to be downloaded, and will be signed with a token that is valid for 24 hours. There is no limit on the number of downloads, but after the time limit the endpoint will no longer function.