Get a webhook endpoint
GET
/v1/webhooks/{webhookId}
WEBHOOK_ID=0f8fad5b-d9cb-469f-a165-70867728950e # the webhookId from adding the endpoint
curl -sS "https://api.speccapture.com/v1/webhooks/$WEBHOOK_ID" \ -H "Authorization: Bearer $SPECCAPTURE_API_KEY"using System.Text.Json;
using HttpClient http = new() { BaseAddress = new Uri("https://api.speccapture.com") };http.DefaultRequestHeaders.Authorization = new("Bearer", Environment.GetEnvironmentVariable("SPECCAPTURE_API_KEY"));
string webhookId = args[0]; // the webhookId from adding the endpoint
HttpResponseMessage response = await Call(HttpMethod.Get, $"/v1/webhooks/{webhookId}");Console.WriteLine(await response.Content.ReadAsStringAsync());
// Sends a request; stops with the problem's code and detail if the API refuses it.async Task<HttpResponseMessage> Call(HttpMethod method, string path, HttpContent? body = null, string? idempotencyKey = null) { using HttpRequestMessage request = new(method, path) { Content = body }; if (idempotencyKey is not null) request.Headers.Add("Idempotency-Key", idempotencyKey); HttpResponseMessage response = await http.SendAsync(request); if (!response.IsSuccessStatusCode) { JsonElement problem = await Json(response); string? detail = (problem.TryGetProperty("detail", out JsonElement text) ? text : problem.GetProperty("title")).GetString(); Console.Error.WriteLine($"{(int)response.StatusCode} {problem.GetProperty("code")}: {detail}"); Environment.Exit(1); } return response;}
// Reads an answer as JSON.static async Task<JsonElement> Json(HttpResponseMessage response) => JsonDocument.Parse(await response.Content.ReadAsStringAsync()).RootElement;import osimport sys
import requests
API = "https://api.speccapture.com"session = requests.Session()session.headers["Authorization"] = f"Bearer {os.environ['SPECCAPTURE_API_KEY']}"
def call(method, path, **kwargs): """Send a request; stop with the problem's code and detail if the API refuses it.""" response = session.request(method, API + path, **kwargs) if not response.ok: problem = response.json() sys.exit(f"{response.status_code} {problem['code']}: {problem.get('detail', problem['title'])}") return response
webhook_id = sys.argv[1] # the webhookId from adding the endpoint
print(call("GET", f"/v1/webhooks/{webhook_id}").text)const API = "https://api.speccapture.com";const headers = { Authorization: `Bearer ${process.env.SPECCAPTURE_API_KEY}` };
const [webhookId] = process.argv.slice(2); // the webhookId from adding the endpoint
console.log(await call("GET", `/v1/webhooks/${webhookId}`).then((response) => response.text()));
// Sends a request; stops with the problem's code and detail if the API refuses it.async function call(method, path, init = {}) { const response = await fetch(API + path, { ...init, method, headers: { ...headers, ...init.headers } }); if (!response.ok) { const problem = await response.json(); console.error(`${response.status} ${problem.code}: ${problem.detail ?? problem.title}`); process.exit(1); } return response;}The endpoint as GET /v1/webhooks lists it: url, description, the first characters of its signing secret (never the secret), when it was added and when it was stopped (stoppedAt, null while it receives events). Another workspace’s endpoint, a deleted one, or an id nobody issued is 404 not_found.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”webhookId
required
string format: uuid
Responses
Section titled “Responses”OK
Media typeapplication/json
object
webhookId
required
string format: uuid
url
required
string
description
required
null | string
secretPrefix
required
string
createdAt
required
string format: date-time
stoppedAt
null | string format: date-time
Not Found: a problem with a stable code. See Errors for every code and what to do about it.
Media typeapplication/problem+json
Every error: a problem with a stable code. https://speccapture.com/docs/api/errors lists every code.
object
type
A link to the code’s entry in the docs.
null | string
title
null | string
status
null | integer format: int32
detail
null | string
instance
null | string
code
What went wrong, as a stable code to branch on: a published code never changes meaning.
string
traceId
This request’s trace: quote it when asking for help.
string