curl -X GET 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.webhooks.destinations.retrieve(
"11111111-2222-3333-4444-555555555555",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.webhooks.destinations.retrieve("11111111-2222-3333-4444-555555555555");
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Webhooks.Destinations.Retrieve(ctx, "11111111-2222-3333-4444-555555555555")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.webhooks().destinations().retrieve("11111111-2222-3333-4444-555555555555");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->webhooks->destinations->retrieve('11111111-2222-3333-4444-555555555555');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.webhooks.destinations.retrieve("11111111-2222-3333-4444-555555555555")
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Webhooks.Destinations.RetrieveAsync("11111111-2222-3333-4444-555555555555");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "11111111-2222-3333-4444-555555555555",
"label": "Production session webhooks",
"url": "https://yourapp.com/webhooks/didit",
"enabled": true,
"webhook_version": "v3",
"secret_shared_key": "tno2NTeRC1ZK3sBOYlBJDyEzBVENl3pQ1AcZyAW0xnQ",
"secret_last4": "0xnQ",
"previous_secret_expires_at": null,
"subscribed_events": [
"status.updated",
"data.updated"
],
"created_by_email": null,
"created_by_name": null,
"created_at": "2026-01-04T08:00:00Z",
"updated_at": "2026-04-22T14:09:11Z",
"health_status": "healthy",
"failing_streak": 0,
"failing_since": null,
"last_success_at": "2026-05-17T09:21:18Z",
"environment": "live",
"summary": {
"total_deliveries": 12453,
"failed_deliveries": 14,
"error_rate_percentage": 0,
"min_response_time_ms": 41,
"avg_response_time_ms": 187,
"max_response_time_ms": 2103,
"last_delivery_at": "2026-05-17T09:21:18Z",
"metrics_window_days": 30
}
}{
"detail": "You do not have permission to perform this action."
}{
"detail": "Webhook destination not found."
}{
"detail": "Request was throttled. Expected available in 30 seconds."
}获取 Webhook 目标详情:Didit 管理 API
通过 Didit 管理 API 获取单个 Webhook 目标,包括签名密钥、订阅事件、健康状态及 30 天投递摘要。按次计费。
curl -X GET 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.webhooks.destinations.retrieve(
"11111111-2222-3333-4444-555555555555",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.webhooks.destinations.retrieve("11111111-2222-3333-4444-555555555555");
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Webhooks.Destinations.Retrieve(ctx, "11111111-2222-3333-4444-555555555555")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.webhooks().destinations().retrieve("11111111-2222-3333-4444-555555555555");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->webhooks->destinations->retrieve('11111111-2222-3333-4444-555555555555');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.webhooks.destinations.retrieve("11111111-2222-3333-4444-555555555555")
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Webhooks.Destinations.RetrieveAsync("11111111-2222-3333-4444-555555555555");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "11111111-2222-3333-4444-555555555555",
"label": "Production session webhooks",
"url": "https://yourapp.com/webhooks/didit",
"enabled": true,
"webhook_version": "v3",
"secret_shared_key": "tno2NTeRC1ZK3sBOYlBJDyEzBVENl3pQ1AcZyAW0xnQ",
"secret_last4": "0xnQ",
"previous_secret_expires_at": null,
"subscribed_events": [
"status.updated",
"data.updated"
],
"created_by_email": null,
"created_by_name": null,
"created_at": "2026-01-04T08:00:00Z",
"updated_at": "2026-04-22T14:09:11Z",
"health_status": "healthy",
"failing_streak": 0,
"failing_since": null,
"last_success_at": "2026-05-17T09:21:18Z",
"environment": "live",
"summary": {
"total_deliveries": 12453,
"failed_deliveries": 14,
"error_rate_percentage": 0,
"min_response_time_ms": 41,
"avg_response_time_ms": 187,
"max_response_time_ms": 2103,
"last_delivery_at": "2026-05-17T09:21:18Z",
"metrics_window_days": 30
}
}{
"detail": "You do not have permission to perform this action."
}{
"detail": "Webhook destination not found."
}{
"detail": "Request was throttled. Expected available in 30 seconds."
}summary 摘要。
相关内容
- 列出 Webhook 目标:每个目标的健康状态和每日投递数量。
- Webhook 指南:如何验证签名,包括在密钥轮换期间如何验证。
授权
您的应用 API 密钥,可在 Business Console 的“开发者 -> API 密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域:针对每个资源设为无权限、只读或读写,限定于特定工作流或已通过的会话、限定于 IP 地址列表,以及设置到期日期。401 表示密钥错误、已撤销或已过期;403 表示未发送密钥、密钥无权访问该资源或操作,或请求来自其 IP 列表之外的地址;在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF URL 将为 null;没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅 https://docs.didit.me/console/api-keys。
路径参数
目标的 UUID(创建/列出时返回的 uuid)。
响应
Webhook 目标详情。
v1, v2, v3 HMAC 签名密钥(43 个字符的 URL 安全 token)。对于使用 API 密钥的调用方始终完整返回;控制台用户需要 read:webhooks 权限,否则返回空字符串。
目标当前签名密钥的最后四位字符,以便您区分不同的密钥。不足以用于验证签名。
此 Webhook 目标的事件过滤器。Didit 仅投递事件类型与这些值之一完全匹配的 Webhook,不支持通配符订阅。发送时,列表必须包含至少一个有效事件(显式传入 [] 将被拒绝并返回 400);列表为空的目标(创建时省略该字段)不会接收任何内容。更新时,列表会被整体替换,绝不会进行合并。
1支持的 Webhook 事件名称。请在 subscribed_events 中使用这些完全匹配的字符串;不支持的值将被拒绝。
status.updated, data.updated, user.status.updated, user.data.updated, business.status.updated, business.data.updated, activity.created, transaction.created, transaction.status.updated, travel_rule.status.updated, workflow.compliance_changed, transaction_rule_suggestions.created, auth.signup, auth.login, auth.login_failed, auth.password_reset_requested, auth.password_reset_completed, auth.mfa_changed, auth.new_device, auth.account_locked, investigator.report.ready, investigator.decision.automated, investigator.decision.overridden, investigator.decision.contested, investigator.question.raised, investigator.automation.paused, investigator.rfi.answered, investigator.rfi.overdue, investigator.drift.detected, investigator.sla.breached, investigator.qa.failed, investigator.external.report.ready ["status.updated", "data.updated"]
创建该目标的 Business Console 成员的邮箱。通过 API 密钥创建的目标为 null。
创建该目标的 Business Console 成员姓名。使用 API 密钥创建的目标为 null。
投递健康状态。failing:自该目标上次成功响应以来,已有 3 个或更多连续事件在首次投递尝试时失败(参见 failing_streak)。degraded:非 failing 状态,但在过去 24 小时内有一次投递尝试失败,且后续没有尝试成功投递该事件;成功投递该事件的重试或重新发送会清除此状态。healthy:均非上述情况。独立于 enabled。失败的尝试是指响应 HTTP 400 或以上,或者完全没有响应的尝试。
healthy, degraded, failing 在最近 30 天内,自该目标上次成功响应以来,首次投递尝试失败的连续事件数量。重试不计入,任何成功的尝试(包括重试或重新发送)都会结束该连续记录。自上次成功以来没有事件失败时为 0。
当前 failing_streak 中第一次失败尝试的时间。当 failing_streak 为 0 时为 null。
在过去 30 天内,目标上次以低于 400 的 HTTP 状态响应投递的时间。如果在此时间窗口内没有以低于 400 的 HTTP 状态响应,则为 null。
拥有该目标的应用的环境。
live, sandbox 最近 metrics_window_days(30)天的投递指标。last_delivery_at 为最近一次尝试的时间,无论其何时发生。
Show child attributes
Show child attributes