curl --request GET \
--url https://app.hookie.ai/admin/api/projects/{project_id}/webhooks \
--cookie hookie_session=const options = {method: 'GET', headers: {cookie: 'hookie_session='}};
fetch('https://app.hookie.ai/admin/api/projects/{project_id}/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.hookie.ai/admin/api/projects/{project_id}/webhooks"
headers = {"cookie": "hookie_session="}
response = requests.get(url, headers=headers)
print(response.text){
"webhooks": [
{
"id": "<string>",
"base_slug": "orders",
"version": "<string>",
"name": "<string>",
"enabled": 0,
"criteria": "<string>",
"dataset": "<string>",
"mappings": "<string>",
"slug": "aBcXyz0123456789abcdefgh",
"require_signature": 0,
"ip_allowlist": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"redirect_url": "<string>",
"cors_origins": [
"<string>"
],
"handshake": "slack",
"handshake_secret_set": true,
"webhook_slug": "aBcXyz0123456789abcdefgh",
"public_path": "acme-3f9a/orders/aBcXyz0123456789abcdefgh",
"public_url": "https://app.hookie.ai/acme-3f9a/orders/aBcXyz0123456789abcdefgh",
"previous_public_url": "<string>",
"previous_url_expires_at": "2023-11-07T05:31:56Z",
"verification": {
"scheme": "none",
"header": "<string>",
"algorithm": "sha256",
"encoding": "hex",
"prefix": "<string>",
"tolerance_seconds": 123,
"has_secret": true,
"previous_secret_expires_at": "2023-11-07T05:31:56Z"
}
}
],
"total": 123,
"limit": 123,
"offset": 123
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}List endpoints
Top-level alias: GET /admin/api/webhooks. Readable by any role. Pages with ?limit and ?offset and returns total, limit and offset beside the array, which is unchanged (DX-6, #201).
curl --request GET \
--url https://app.hookie.ai/admin/api/projects/{project_id}/webhooks \
--cookie hookie_session=const options = {method: 'GET', headers: {cookie: 'hookie_session='}};
fetch('https://app.hookie.ai/admin/api/projects/{project_id}/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.hookie.ai/admin/api/projects/{project_id}/webhooks"
headers = {"cookie": "hookie_session="}
response = requests.get(url, headers=headers)
print(response.text){
"webhooks": [
{
"id": "<string>",
"base_slug": "orders",
"version": "<string>",
"name": "<string>",
"enabled": 0,
"criteria": "<string>",
"dataset": "<string>",
"mappings": "<string>",
"slug": "aBcXyz0123456789abcdefgh",
"require_signature": 0,
"ip_allowlist": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"redirect_url": "<string>",
"cors_origins": [
"<string>"
],
"handshake": "slack",
"handshake_secret_set": true,
"webhook_slug": "aBcXyz0123456789abcdefgh",
"public_path": "acme-3f9a/orders/aBcXyz0123456789abcdefgh",
"public_url": "https://app.hookie.ai/acme-3f9a/orders/aBcXyz0123456789abcdefgh",
"previous_public_url": "<string>",
"previous_url_expires_at": "2023-11-07T05:31:56Z",
"verification": {
"scheme": "none",
"header": "<string>",
"algorithm": "sha256",
"encoding": "hex",
"prefix": "<string>",
"tolerance_seconds": 123,
"has_secret": true,
"previous_secret_expires_at": "2023-11-07T05:31:56Z"
}
}
],
"total": 123,
"limit": 123,
"offset": 123
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>",
"scheme": "<string>"
}Authorizations
The console's sealed session cookie, set by WorkOS AuthKit. Mutating requests also require the X-Requested-With CSRF header.
Path Parameters
Project id (UUID) belonging to the caller workspace.
Query Parameters
Page size, 1-1000. Omitted, the whole list up to 1000 rows (#201).
1 <= x <= 1000Rows to skip (#201).
x >= 0Response
All webhook versions in the project, ordered by base_slug then version. slug is the high-entropy public URL credential used at app.hookie.ai/{workspace}/{project}/{slug}; base_slug plus version is the human identity. criteria, mappings and ip_allowlist are JSON-encoded strings as stored. After a rotation, previous_public_url is the replaced URL, still accepted until previous_url_expires_at; both are null outside an overlap. verification is the endpoint's signature check: scheme, settings, has_secret and previous_secret_expires_at, never the secret.