Management API

Event Types

Define and manage the events your system can emit

Event types define what kinds of events your system produces (e.g., order.created, invoice.paid). Endpoints subscribe to specific event types to receive only relevant webhooks. Learn more in the Event Types guide.

API base path: /management/v1/workspaces/{workspaceId}/event-types

Response shape:

FieldTypeDescription
idstringUnique identifier with evt_ prefix
namestringDot-notation event name (e.g., order.created)
descriptionstring | nullHuman-readable description
createdAtstringISO 8601 creation timestamp

List event types

Retrieve all event types defined in a workspace.

curl https://api.nahook.com/management/v1/workspaces/ws_abc/event-types \
  -H "Authorization: Bearer nhm_YOUR_TOKEN"
const { data } = await mgmt.eventTypes.list("ws_abc");

for (const et of data) {
  console.log(et.name);
}
result = mgmt.event_types.list("ws_abc")

for et in result["data"]:
    print(et["name"])
result, _ := mgmt.EventTypes.List(ctx, "ws_abc")

for _, et := range result.Data {
    fmt.Println(et.Name)
}
var result = mgmt.eventTypes().list("ws_abc");

for (var et : result.getData()) {
    System.out.println(et.getName());
}
var result = await mgmt.EventTypes.ListAsync("ws_abc");

foreach (var et in result.Data)
{
    Console.WriteLine(et.Name);
}
$result = $mgmt->eventTypes->list("ws_abc");

foreach ($result["data"] as $et) {
    echo $et["name"] . "\n";
}
result = mgmt.event_types.list("ws_abc")

result["data"].each do |et|
  puts et["name"]
end
let result = mgmt.event_types().list("ws_abc").await?;

for et in &result.data {
    println!("{}", et.name);
}

Create an event type

Register a new event type in a workspace.

Event type names must be unique within a workspace. Use dot-notation for namespacing (e.g., order.created, user.updated).

curl -X POST https://api.nahook.com/management/v1/workspaces/ws_abc/event-types \
  -H "Authorization: Bearer nhm_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "order.created", "description": "Fired when a new order is placed"}'
const et = await mgmt.eventTypes.create("ws_abc", {
  name: "order.created",
  description: "Fired when a new order is placed",
});

// et.id -> "evt_..."
et = mgmt.event_types.create(
    "ws_abc",
    name="order.created",
    description="Fired when a new order is placed",
)

# et["id"] -> "evt_..."
et, _ := mgmt.EventTypes.Create(ctx, "ws_abc", nahook.CreateEventTypeOptions{
    Name:        "order.created",
    Description: "Fired when a new order is placed",
})

// et.ID -> "evt_..."
var et = mgmt.eventTypes().create(
    "ws_abc",
    new CreateEventTypeOptions("order.created", "Fired when a new order is placed")
);

// et.getId() -> "evt_..."
var et = await mgmt.EventTypes.CreateAsync("ws_abc", new CreateEventTypeOptions
{
    Name = "order.created",
    Description = "Fired when a new order is placed",
});

// et.Id -> "evt_..."
$et = $mgmt->eventTypes->create("ws_abc", [
    "name" => "order.created",
    "description" => "Fired when a new order is placed",
]);

// $et["id"] -> "evt_..."
et = mgmt.event_types.create(
  "ws_abc",
  name: "order.created",
  description: "Fired when a new order is placed",
)

# et["id"] -> "evt_..."
let et = mgmt.event_types().create("ws_abc", CreateEventTypeOptions {
    name: "order.created".into(),
    description: Some("Fired when a new order is placed".into()),
}).await?;

// et.id -> "evt_..."

Get an event type

Retrieve a single event type by ID.

curl https://api.nahook.com/management/v1/workspaces/ws_abc/event-types/evt_123 \
  -H "Authorization: Bearer nhm_YOUR_TOKEN"
const et = await mgmt.eventTypes.get("ws_abc", "evt_123");
et = mgmt.event_types.get("ws_abc", "evt_123")
et, _ := mgmt.EventTypes.Get(ctx, "ws_abc", "evt_123")
var et = mgmt.eventTypes().get("ws_abc", "evt_123");
var et = await mgmt.EventTypes.GetAsync("ws_abc", "evt_123");
$et = $mgmt->eventTypes->get("ws_abc", "evt_123");
et = mgmt.event_types.get("ws_abc", "evt_123")
let et = mgmt.event_types().get("ws_abc", "evt_123").await?;

Update an event type

Update the description of an existing event type. The name field cannot be changed after creation.

curl -X PATCH https://api.nahook.com/management/v1/workspaces/ws_abc/event-types/evt_123 \
  -H "Authorization: Bearer nhm_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"description": "Updated description"}'
const et = await mgmt.eventTypes.update("ws_abc", "evt_123", {
  description: "Updated description",
});
et = mgmt.event_types.update("ws_abc", "evt_123", description="Updated description")
et, _ := mgmt.EventTypes.Update(ctx, "ws_abc", "evt_123", nahook.UpdateEventTypeOptions{
    Description: stringPtr("Updated description"),
})
var et = mgmt.eventTypes().update(
    "ws_abc",
    "evt_123",
    new UpdateEventTypeOptions("Updated description")
);
var et = await mgmt.EventTypes.UpdateAsync("ws_abc", "evt_123", new UpdateEventTypeOptions
{
    Description = "Updated description",
});
$et = $mgmt->eventTypes->update("ws_abc", "evt_123", [
    "description" => "Updated description",
]);
et = mgmt.event_types.update("ws_abc", "evt_123", description: "Updated description")
let et = mgmt.event_types().update("ws_abc", "evt_123", UpdateEventTypeOptions {
    description: Some("Updated description".into()),
}).await?;

Delete an event type

Permanently delete an event type from a workspace.

An event type cannot be deleted while it has active subscriptions. Remove all subscriptions first.

curl -X DELETE https://api.nahook.com/management/v1/workspaces/ws_abc/event-types/evt_123 \
  -H "Authorization: Bearer nhm_YOUR_TOKEN"
await mgmt.eventTypes.delete("ws_abc", "evt_123");
mgmt.event_types.delete("ws_abc", "evt_123")
_ = mgmt.EventTypes.Delete(ctx, "ws_abc", "evt_123")
mgmt.eventTypes().delete("ws_abc", "evt_123");
await mgmt.EventTypes.DeleteAsync("ws_abc", "evt_123");
$mgmt->eventTypes->delete("ws_abc", "evt_123");
mgmt.event_types.delete("ws_abc", "evt_123")
mgmt.event_types().delete("ws_abc", "evt_123").await?;