curl --request PUT \
--url https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'If-Match: <if-match>' \
--data '
{
"delivery": {
"kind": "webhook",
"verificationCredential": {
"credentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vaultId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"displayName": "<string>",
"type": "slack_events_api"
}
'import requests
url = "https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}"
payload = {
"delivery": {
"kind": "webhook",
"verificationCredential": {
"credentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vaultId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"displayName": "<string>",
"type": "slack_events_api"
}
headers = {
"If-Match": "<if-match>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'If-Match': '<if-match>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
delivery: {
kind: 'webhook',
verificationCredential: {
credentialId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
vaultId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
}
},
displayName: '<string>',
type: 'slack_events_api'
})
};
fetch('https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'delivery' => [
'kind' => 'webhook',
'verificationCredential' => [
'credentialId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'vaultId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'displayName' => '<string>',
'type' => 'slack_events_api'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"If-Match: <if-match>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}"
payload := strings.NewReader("{\n \"delivery\": {\n \"kind\": \"webhook\",\n \"verificationCredential\": {\n \"credentialId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"vaultId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n },\n \"displayName\": \"<string>\",\n \"type\": \"slack_events_api\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("If-Match", "<if-match>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}")
.header("If-Match", "<if-match>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"delivery\": {\n \"kind\": \"webhook\",\n \"verificationCredential\": {\n \"credentialId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"vaultId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n },\n \"displayName\": \"<string>\",\n \"type\": \"slack_events_api\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["If-Match"] = '<if-match>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"delivery\": {\n \"kind\": \"webhook\",\n \"verificationCredential\": {\n \"credentialId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"vaultId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n },\n \"displayName\": \"<string>\",\n \"type\": \"slack_events_api\"\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2023-11-07T05:31:56Z",
"delivery": {
"kind": "webhook",
"webhookUrl": "<string>",
"verification": {
"type": "none",
"signatureHeader": "<string>",
"signaturePrefix": "<string>",
"signedParts": [
{
"kind": "body"
}
],
"verificationCredential": {
"credentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vaultId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"verificationCredential": {
"credentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vaultId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"displayName": "<string>",
"eventSourceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"revision": 4503599627370496,
"status": "paused",
"type": "slack_events_api",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"code": "invalid_json",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "unauthorized",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "forbidden",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "not_found",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "conflict",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "precondition_failed",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "payload_too_large",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "unsupported_media_type",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "event_source_verification_credential_invalid",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "precondition_required",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "rate_limit_exceeded",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "internal_error",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "bad_gateway",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "event_sources_unconfigured",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "gateway_timeout",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}Replace an event source configuration
Replaces the complete writable webhook configuration while preserving lifecycle state. Connection-managed sources cannot be replaced. Requires the latest strong ETag in If-Match.
curl --request PUT \
--url https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'If-Match: <if-match>' \
--data '
{
"delivery": {
"kind": "webhook",
"verificationCredential": {
"credentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vaultId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"displayName": "<string>",
"type": "slack_events_api"
}
'import requests
url = "https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}"
payload = {
"delivery": {
"kind": "webhook",
"verificationCredential": {
"credentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vaultId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"displayName": "<string>",
"type": "slack_events_api"
}
headers = {
"If-Match": "<if-match>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'If-Match': '<if-match>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
delivery: {
kind: 'webhook',
verificationCredential: {
credentialId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
vaultId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
}
},
displayName: '<string>',
type: 'slack_events_api'
})
};
fetch('https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'delivery' => [
'kind' => 'webhook',
'verificationCredential' => [
'credentialId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'vaultId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'displayName' => '<string>',
'type' => 'slack_events_api'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"If-Match: <if-match>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}"
payload := strings.NewReader("{\n \"delivery\": {\n \"kind\": \"webhook\",\n \"verificationCredential\": {\n \"credentialId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"vaultId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n },\n \"displayName\": \"<string>\",\n \"type\": \"slack_events_api\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("If-Match", "<if-match>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}")
.header("If-Match", "<if-match>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"delivery\": {\n \"kind\": \"webhook\",\n \"verificationCredential\": {\n \"credentialId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"vaultId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n },\n \"displayName\": \"<string>\",\n \"type\": \"slack_events_api\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["If-Match"] = '<if-match>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"delivery\": {\n \"kind\": \"webhook\",\n \"verificationCredential\": {\n \"credentialId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"vaultId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n },\n \"displayName\": \"<string>\",\n \"type\": \"slack_events_api\"\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2023-11-07T05:31:56Z",
"delivery": {
"kind": "webhook",
"webhookUrl": "<string>",
"verification": {
"type": "none",
"signatureHeader": "<string>",
"signaturePrefix": "<string>",
"signedParts": [
{
"kind": "body"
}
],
"verificationCredential": {
"credentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vaultId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"verificationCredential": {
"credentialId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vaultId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"displayName": "<string>",
"eventSourceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"revision": 4503599627370496,
"status": "paused",
"type": "slack_events_api",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"code": "invalid_json",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "unauthorized",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "forbidden",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "not_found",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "conflict",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "precondition_failed",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "payload_too_large",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "unsupported_media_type",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "event_source_verification_credential_invalid",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "precondition_required",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "rate_limit_exceeded",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "internal_error",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "bad_gateway",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "event_sources_unconfigured",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "gateway_timeout",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}Authorizations
A Recursion API key, created in the console under API keys.
Headers
Strong ETag returned by the latest event-source member read.
^"[\u0021\u0023-\u007E\u0080-\u00FF]*"$Optional tenant consistency check. When present, it must name the tenant bound to the API key, including when x-organization-id is default.
1Organization in which to act. Required for a tenant-scoped API key. Optional for an organization-scoped key, where it must name that same organization. The value may be an organization id or default.
1Path Parameters
Stable event-source identifier.
Body
- Option 1
- Option 2
- Option 3
- Option 4
Closed configuration for a Slack Events API source.
Customer-configured webhook delivery and verification.
Show child attributes
Show child attributes
Human-readable source name shown in the automation catalog.
1 - 256Slack Events API protocol, verified with Slack's request signature.
slack_events_api Response
Configured inbound event source, including its verification policy and lifecycle state.
Configured inbound event source, including its verification policy and lifecycle state.
Time the event source was created.
Customer-owned webhook endpoint and its non-secret verification configuration.
- Option 1
- Option 2
Show child attributes
Show child attributes
Human-readable source name shown in the automation catalog.
Stable identifier for the event source.
Monotonic revision represented by the response ETag.
1 <= x <= 9007199254740991Lifecycle state. Custom webhook sources start paused; connection-managed sources start active.
paused, active Inbound provider protocol interpreted by this source.
slack_events_api, github_webhook, custom_webhook Time the event source was last changed.