Groupilot Docs

Webhooks

GET
/events/{id}/member-webhook

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Path Parameters

id*string
Formatuuid

Response Body

Configuration and last deliveries.

application/json
  1. response
url*string|null
secret_configured*boolean
signing_secret?string

Only in the response that created it. Never shown again.

recent_deliveries*array<>
curl -X GET 'https://app.groupilot.com/api/v1/events/497f6eca-6276-4993-bfeb-53cbbbba6f08/member-webhook'
{  "url": "string",  "secret_configured": true,  "signing_secret": "string",  "recent_deliveries": [    {      "id": "string",      "type": "string",      "status": "string",      "attempt_count": 0,      "last_http_status": 0,      "last_error_code": "string",      "created_at": "2019-08-24T14:15:22Z",      "completed_at": "2019-08-24T14:15:22Z"    }  ]}
PUT
/events/{id}/member-webhook

Groupilot POSTs member.joined to this URL when someone joins a community of the event, signed with X-Groupilot-Signature: t=…,v1=… (HMAC-SHA256 of <t>.<body>). The signing secret is returned once.

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Path Parameters

id*string
Formatuuid

Request Body

application/json
  1. body
url*|

HTTPS URL, or null to disable.

Formaturi
Lengthlength <= 2000

Response Body

Saved.

application/json
  1. response
url*string|null
secret_configured*boolean
signing_secret?string

Only in the response that created it. Never shown again.

recent_deliveries*array<>
curl -X PUT 'https://app.groupilot.com/api/v1/events/497f6eca-6276-4993-bfeb-53cbbbba6f08/member-webhook' \  -H 'Content-Type: application/json' \  -d '{  "url": "http://example.com"}'
{  "url": "string",  "secret_configured": true,  "signing_secret": "string",  "recent_deliveries": [    {      "id": "string",      "type": "string",      "status": "string",      "attempt_count": 0,      "last_http_status": 0,      "last_error_code": "string",      "created_at": "2019-08-24T14:15:22Z",      "completed_at": "2019-08-24T14:15:22Z"    }  ]}
POST
/events/{id}/member-webhook/rotate-secret

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Path Parameters

id*string
Formatuuid

Response Body

New secret, shown once.

application/json
  1. response
signing_secret*string
rotated_at*string

ISO 8601 date-time with offset.

Formatdate-time
curl -X POST 'https://app.groupilot.com/api/v1/events/497f6eca-6276-4993-bfeb-53cbbbba6f08/member-webhook/rotate-secret'
{  "signing_secret": "string",  "rotated_at": "2019-08-24T14:15:22Z"}

Send a test delivery

POST
/events/{id}/member-webhook/test

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Path Parameters

id*string
Formatuuid

Response Body

Attempted right away.

application/json
  1. response
delivery_id*string
status*string
http_status*integer|null
curl -X POST 'https://app.groupilot.com/api/v1/events/497f6eca-6276-4993-bfeb-53cbbbba6f08/member-webhook/test'
{  "delivery_id": "string",  "status": "string",  "http_status": 0}

List webhook endpoints

GET
/webhooks

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Response Body

Endpoints of the account.

application/json
  1. response
items*array<>
curl -X GET 'https://app.groupilot.com/api/v1/webhooks'
{  "items": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "url": "string",      "description": "string",      "events": [        "member.joined"      ],      "enabled": true,      "disabled_reason": "user",      "consecutive_failures": 0,      "created_at": "2019-08-24T14:15:22Z",      "updated_at": "2019-08-24T14:15:22Z",      "disabled_at": "2019-08-24T14:15:22Z"    }  ]}
POST
/webhooks

HTTPS, public host only (no private address, no credentials in the URL). At most 5 endpoints per account. The signing secret is returned once.

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Request Body

application/json
  1. body
url*string
Match^https:\/\/\S+$
Length12 <= length <= 2048
events*array<>
Items1 <= items <= 8
description?string
Length1 <= length <= 120

Response Body

Created.

application/json
  1. response
id*string
Formatuuid
url*string
description*string|null
events*array<>
enabled*boolean
disabled_reason*|

failures: paused automatically after 50 consecutive deliveries failed for good; fix the endpoint, then enabled: true.

Value in"user""failures"null
consecutive_failures*integer

Deliveries that failed for good since the last success.

created_at*string

ISO 8601 date-time with offset.

Formatdate-time
updated_at*string

ISO 8601 date-time with offset.

Formatdate-time
disabled_at*|

ISO 8601 date-time with offset.

Formatdate-time
signing_secret*string

Shown once. HMAC-SHA256 key of the X-Groupilot-Signature header.

curl -X POST 'https://app.groupilot.com/api/v1/webhooks' \  -H 'Content-Type: application/json' \  -d '{  "url": "stringstring",  "events": [    "member.joined"  ]}'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "url": "string",  "description": "string",  "events": [    "member.joined"  ],  "enabled": true,  "disabled_reason": "user",  "consecutive_failures": 0,  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "disabled_at": "2019-08-24T14:15:22Z",  "signing_secret": "string"}

Get a webhook endpoint

GET
/webhooks/{id}

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Path Parameters

id*string
Formatuuid

Response Body

Endpoint.

application/json
  1. response
id*string
Formatuuid
url*string
description*string|null
events*array<>
enabled*boolean
disabled_reason*|

failures: paused automatically after 50 consecutive deliveries failed for good; fix the endpoint, then enabled: true.

Value in"user""failures"null
consecutive_failures*integer

Deliveries that failed for good since the last success.

created_at*string

ISO 8601 date-time with offset.

Formatdate-time
updated_at*string

ISO 8601 date-time with offset.

Formatdate-time
disabled_at*|

ISO 8601 date-time with offset.

Formatdate-time
curl -X GET 'https://app.groupilot.com/api/v1/webhooks/497f6eca-6276-4993-bfeb-53cbbbba6f08'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "url": "string",  "description": "string",  "events": [    "member.joined"  ],  "enabled": true,  "disabled_reason": "user",  "consecutive_failures": 0,  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "disabled_at": "2019-08-24T14:15:22Z"}
PATCH
/webhooks/{id}

enabled: false pauses deliveries (nothing is queued while paused); enabled: true resumes, including after an automatic pause (50 consecutive failures), and resets the failure count.

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Path Parameters

id*string
Formatuuid

Request Body

application/json
  1. body
url?string
Match^https:\/\/\S+$
Length12 <= length <= 2048
events?array<>
Items1 <= items <= 8
description?|
Length1 <= length <= 120
enabled?boolean

Response Body

Changed.

application/json
  1. response
id*string
Formatuuid
url*string
description*string|null
events*array<>
enabled*boolean
disabled_reason*|

failures: paused automatically after 50 consecutive deliveries failed for good; fix the endpoint, then enabled: true.

Value in"user""failures"null
consecutive_failures*integer

Deliveries that failed for good since the last success.

created_at*string

ISO 8601 date-time with offset.

Formatdate-time
updated_at*string

ISO 8601 date-time with offset.

Formatdate-time
disabled_at*|

ISO 8601 date-time with offset.

Formatdate-time
curl -X PATCH 'https://app.groupilot.com/api/v1/webhooks/497f6eca-6276-4993-bfeb-53cbbbba6f08' \  -H 'Content-Type: application/json' \  -d '{}'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "url": "string",  "description": "string",  "events": [    "member.joined"  ],  "enabled": true,  "disabled_reason": "user",  "consecutive_failures": 0,  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "disabled_at": "2019-08-24T14:15:22Z"}
DELETE
/webhooks/{id}

Its delivery history goes with it.

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Path Parameters

id*string
Formatuuid

Response Body

Deleted.

curl -X DELETE 'https://app.groupilot.com/api/v1/webhooks/497f6eca-6276-4993-bfeb-53cbbbba6f08'
Empty
POST
/webhooks/{id}/rotate-secret

The new secret applies to the next deliveries; update your verifier first, then rotate.

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Path Parameters

id*string
Formatuuid

Response Body

New secret, shown once.

application/json
  1. response
signing_secret*string
rotated_at*string

ISO 8601 date-time with offset.

Formatdate-time
curl -X POST 'https://app.groupilot.com/api/v1/webhooks/497f6eca-6276-4993-bfeb-53cbbbba6f08/rotate-secret'
{  "signing_secret": "string",  "rotated_at": "2019-08-24T14:15:22Z"}

Send a test delivery

POST
/webhooks/{id}/test

Posts a webhook.test envelope now and returns the outcome of the first attempt.

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Path Parameters

id*string
Formatuuid

Response Body

First attempt outcome.

application/json
  1. response
delivery_id*string
Formatuuid
status*string
Value in"delivered""failed""pending"
http_status*integer|null
error_code*string|null
curl -X POST 'https://app.groupilot.com/api/v1/webhooks/497f6eca-6276-4993-bfeb-53cbbbba6f08/test'
{  "delivery_id": "9892f438-d31c-4ff2-bc84-146525b292ff",  "status": "delivered",  "http_status": 0,  "error_code": "string"}
GET
/webhooks/{id}/deliveries

Newest first, 30 days of history.

Authorization

bearerAuth
headerAuthorizationBearer <token>

An API key created in Settings > Integrations (gp_live_…), or an OAuth access token.

Path Parameters

id*string
Formatuuid

Query Parameters

limit?integer
Range1 <= value <= 100
Default50
before?string

Only deliveries created before this instant (pagination).

Formatdate-time

Response Body

Deliveries.

application/json
  1. response
items*array<>
curl -X GET 'https://app.groupilot.com/api/v1/webhooks/497f6eca-6276-4993-bfeb-53cbbbba6f08/deliveries'
{  "items": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "type": "string",      "status": "pending",      "attempt_count": 0,      "max_attempts": 0,      "last_http_status": 0,      "last_error_code": "string",      "occurred_at": "2019-08-24T14:15:22Z",      "created_at": "2019-08-24T14:15:22Z",      "last_attempt_at": "2019-08-24T14:15:22Z",      "next_attempt_at": "2019-08-24T14:15:22Z",      "completed_at": "2019-08-24T14:15:22Z"    }  ]}