SpareSpare Docs
GuidesAPI Reference

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 code such as payments. This is the value you pass as product when creating a subscription.
  • Resource: an entity within that product, identified by a type such as payment or consent. These are the values you pass in the resources array.
  • 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 as payment.completed. Branch on this in your handler. It is the stable value.
  • event.data.status: the platform status behind that transition, such as AcceptedCreditSettlementCompleted. 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.

ProductStatus
paymentsLive, subscribe today
dataComing soon
verificationComing 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.

On this page