Event Catalog
Products, resources, and event names available for UAE webhook subscriptions today.
GET /webhooks/catalog is the live source of truth for what Spare publishes on your tenant. Call it when integrating, and call it again when Spare announces new products or resources. This page describes the current UAE catalog; the API is the authoritative reference.
Reading the Catalog
The catalog returns three nested levels:
- Product: a commercial area of the platform, identified by a
codesuch aspayments. This is the value you pass asproductwhen creating a subscription. - Resource: an entity within that product, identified by a
typesuch aspaymentorconsent. These are the values you pass in theresourcesarray. - Events: the event names a resource can emit. Subscribing to a resource means you receive all of its events.
The catalog lists everything published for your tenant. It is not filtered by your commercial entitlements. Seeing a product in the catalog means it exists on the platform. Whether events actually occur for your account depends on which Spare products are enabled for you.
{
"data": {
"products": [
{
"code": "payments",
"resources": [
{
"type": "payment",
"events": ["payment.processing", "payment.completed", "payment.failed"]
}
]
}
]
}
}curl https://api.sandbox.tryspare.ae/webhooks/catalog \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "x-tenant: UAE"const res = await fetch(
"https://api.sandbox.tryspare.ae/webhooks/catalog",
{
headers: {
Authorization: `Bearer ${accessToken}`,
"x-tenant": "UAE",
},
},
);
const catalog = await res.json();import requests
res = requests.get(
"https://api.sandbox.tryspare.ae/webhooks/catalog",
headers={
"Authorization": f"Bearer {access_token}",
"x-tenant": "UAE",
},
)
catalog = res.json()var request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sandbox.tryspare.ae/webhooks/catalog"))
.header("Authorization", "Bearer " + accessToken)
.header("x-tenant", "UAE")
.GET()
.build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", accessToken);
client.DefaultRequestHeaders.Add("x-tenant", "UAE");
var response = await client.GetAsync(
"https://api.sandbox.tryspare.ae/webhooks/catalog");
var catalog = await response.Content.ReadAsStringAsync();req, _ := http.NewRequest("GET",
"https://api.sandbox.tryspare.ae/webhooks/catalog", nil)
req.Header.Set("Authorization", "Bearer "+accessToken)
req.Header.Set("x-tenant", "UAE")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()UAE Payments Catalog
The payments product is live and subscribable today. It publishes five resource types.
Event Names vs. Platform Statuses
Each event carries two identifiers:
event.type: the public event name from the catalog, such aspayment.completed. Branch on this in your handler. It is the stable value.event.data.status: the platform status behind that transition, such asAcceptedCreditSettlementCompleted. It is more granular and closer to the bank's vocabulary.
Several platform statuses can map to the same public event. payment.processing, for example, covers Pending, AcceptedSettlementCompleted, and AcceptedWithoutPosting. For routine order handling, event.type is sufficient and will stay more stable. Use data.status only when reconciliation or support tooling needs the extra detail.
Coming Soon
The catalog also lists data and verification. These products are coming soon. Neither has resources published yet, so subscriptions are not available for them today. Spare will publish resources under each product when it launches. Until then, a subscription attempt returns 400.
| Product | Status |
|---|---|
payments | Live, subscribe today |
data | Coming soon |
verification | Coming soon |
When a product launches, its resources will appear in the catalog automatically. Existing subscriptions continue to work unchanged, and new resources within a product you are already subscribed to will arrive at your endpoint without any changes on your side.