Management API
Environments
Manage environments and event type visibility across development stages
Environments isolate your webhook infrastructure across development stages. See the Environments guide for concepts and routing behavior.
Environments
List environments
curl https://api.nahook.com/management/v1/workspaces/ws_abc/environments \
-H "Authorization: Bearer nhm_YOUR_TOKEN"const { data } = await mgmt.environments.list("ws_abc");
for (const env of data) {
console.log(env.name, env.slug, env.isDefault);
}result = mgmt.environments.list("ws_abc")
for env in result["data"]:
print(env["name"], env["slug"], env["isDefault"])result, _ := mgmt.Environments.List(ctx, "ws_abc")
for _, env := range result.Data {
fmt.Println(env.Name, env.Slug, env.IsDefault)
}var result = mgmt.environments().list("ws_abc");
for (var env : result.getData()) {
System.out.println(env.getName() + " " + env.getSlug() + " " + env.isDefault());
}var result = await mgmt.Environments.ListAsync("ws_abc");
foreach (var env in result.Data)
{
Console.WriteLine($"{env.Name} {env.Slug} {env.IsDefault}");
}$result = $mgmt->environments->list("ws_abc");
foreach ($result["data"] as $env) {
echo $env["name"] . " " . $env["slug"] . " " . $env["isDefault"] . "\n";
}result = mgmt.environments.list("ws_abc")
result["data"].each do |env|
puts "#{env["name"]} #{env["slug"]} #{env["isDefault"]}"
endlet result = mgmt.environments().list("ws_abc").await?;
for env in result.data {
println!("{} {} {}", env.name, env.slug, env.is_default);
}Create an environment
curl -X POST https://api.nahook.com/management/v1/workspaces/ws_abc/environments \
-H "Authorization: Bearer nhm_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Staging", "slug": "staging"}'const env = await mgmt.environments.create("ws_abc", { name: "Staging", slug: "staging" });
// env.id -> "env_...", env.isDefault -> falseenv = mgmt.environments.create("ws_abc", name="Staging", slug="staging")
# env["id"] -> "env_..."env, _ := mgmt.Environments.Create(ctx, "ws_abc", nahook.CreateEnvironmentOptions{
Name: "Staging",
Slug: "staging",
})var env = mgmt.environments().create("ws_abc", new CreateEnvironmentOptions("Staging", "staging"));var env = await mgmt.Environments.CreateAsync("ws_abc", new CreateEnvironmentOptions
{
Name = "Staging",
Slug = "staging"
});$env = $mgmt->environments->create("ws_abc", ["name" => "Staging", "slug" => "staging"]);env = mgmt.environments.create("ws_abc", name: "Staging", slug: "staging")let env = mgmt.environments()
.create("ws_abc", CreateEnvironmentOptions {
name: "Staging".into(),
slug: "staging".into(),
})
.await?;Get an environment
curl https://api.nahook.com/management/v1/workspaces/ws_abc/environments/env_123 \
-H "Authorization: Bearer nhm_YOUR_TOKEN"const env = await mgmt.environments.get("ws_abc", "env_123");env = mgmt.environments.get("ws_abc", "env_123")env, _ := mgmt.Environments.Get(ctx, "ws_abc", "env_123")var env = mgmt.environments().get("ws_abc", "env_123");var env = await mgmt.Environments.GetAsync("ws_abc", "env_123");$env = $mgmt->environments->get("ws_abc", "env_123");env = mgmt.environments.get("ws_abc", "env_123")let env = mgmt.environments().get("ws_abc", "env_123").await?;Update an environment
Only the name can be changed — slugs are immutable after creation.
curl -X PATCH https://api.nahook.com/management/v1/workspaces/ws_abc/environments/env_123 \
-H "Authorization: Bearer nhm_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Pre-production"}'const updated = await mgmt.environments.update("ws_abc", "env_123", { name: "Pre-production" });updated = mgmt.environments.update("ws_abc", "env_123", name="Pre-production")name := "Pre-production"
updated, _ := mgmt.Environments.Update(ctx, "ws_abc", "env_123", nahook.UpdateEnvironmentOptions{
Name: &name,
})var updated = mgmt.environments().update("ws_abc", "env_123",
UpdateEnvironmentOptions.withName("Pre-production"));var updated = await mgmt.Environments.UpdateAsync("ws_abc", "env_123", new UpdateEnvironmentOptions
{
Name = "Pre-production"
});$updated = $mgmt->environments->update("ws_abc", "env_123", ["name" => "Pre-production"]);updated = mgmt.environments.update("ws_abc", "env_123", name: "Pre-production")let updated = mgmt.environments()
.update("ws_abc", "env_123", UpdateEnvironmentOptions {
name: Some("Pre-production".into()),
})
.await?;Delete an environment
Deleting an environment removes all API keys and endpoints scoped to it. The default environment cannot be deleted.
curl -X DELETE https://api.nahook.com/management/v1/workspaces/ws_abc/environments/env_123 \
-H "Authorization: Bearer nhm_YOUR_TOKEN"await mgmt.environments.delete("ws_abc", "env_123");mgmt.environments.delete("ws_abc", "env_123")_ = mgmt.Environments.Delete(ctx, "ws_abc", "env_123")mgmt.environments().delete("ws_abc", "env_123");await mgmt.Environments.DeleteAsync("ws_abc", "env_123");$mgmt->environments->delete("ws_abc", "env_123");mgmt.environments.delete("ws_abc", "env_123")mgmt.environments().delete("ws_abc", "env_123").await?;Event Type Visibility
Event types are workspace-wide, but their visibility is controlled per environment. An event type must be published in an environment for fan-out delivery to work there.
List visibility
curl https://api.nahook.com/management/v1/workspaces/ws_abc/environments/env_123/event-types \
-H "Authorization: Bearer nhm_YOUR_TOKEN"const { data } = await mgmt.environments.listEventTypeVisibility("ws_abc", "env_123");
for (const v of data) {
console.log(v.eventTypeName, v.published);
}result = mgmt.environments.list_event_type_visibility("ws_abc", "env_123")
for v in result["data"]:
print(v["eventTypeName"], v["published"])result, _ := mgmt.Environments.ListEventTypeVisibility(ctx, "ws_abc", "env_123")
for _, v := range result.Data {
fmt.Println(v.EventTypeName, v.Published)
}var result = mgmt.environments().listEventTypeVisibility("ws_abc", "env_123");
for (var v : result.getData()) {
System.out.println(v.getEventTypeName() + " " + v.isPublished());
}var result = await mgmt.Environments.ListEventTypeVisibilityAsync("ws_abc", "env_123");
foreach (var v in result.Data)
{
Console.WriteLine($"{v.EventTypeName} {v.Published}");
}$result = $mgmt->environments->listEventTypeVisibility("ws_abc", "env_123");
foreach ($result["data"] as $v) {
echo $v["eventTypeName"] . " " . ($v["published"] ? "true" : "false") . "\n";
}result = mgmt.environments.list_event_type_visibility("ws_abc", "env_123")
result["data"].each do |v|
puts "#{v["eventTypeName"]} #{v["published"]}"
endlet result = mgmt.environments()
.list_event_type_visibility("ws_abc", "env_123")
.await?;
for v in result.data {
println!("{} {}", v.event_type_name, v.published);
}Publish or unpublish an event type
curl -X PUT https://api.nahook.com/management/v1/workspaces/ws_abc/environments/env_123/event-types/evt_456/visibility \
-H "Authorization: Bearer nhm_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"published": true}'const vis = await mgmt.environments.setEventTypeVisibility(
"ws_abc", "env_123", "evt_456", { published: true }
);
// vis.eventTypeName -> "order.created", vis.published -> truevis = mgmt.environments.set_event_type_visibility(
"ws_abc", "env_123", "evt_456", published=True
)vis, _ := mgmt.Environments.SetEventTypeVisibility(ctx, "ws_abc", "env_123", "evt_456",
nahook.SetVisibilityOptions{Published: true})var vis = mgmt.environments().setEventTypeVisibility(
"ws_abc", "env_123", "evt_456", new SetVisibilityOptions(true));var vis = await mgmt.Environments.SetEventTypeVisibilityAsync(
"ws_abc", "env_123", "evt_456", new SetVisibilityOptions { Published = true });$vis = $mgmt->environments->setEventTypeVisibility(
"ws_abc", "env_123", "evt_456", ["published" => true]
);vis = mgmt.environments.set_event_type_visibility(
"ws_abc", "env_123", "evt_456", published: true
)let vis = mgmt.environments()
.set_event_type_visibility("ws_abc", "env_123", "evt_456",
SetVisibilityOptions { published: true })
.await?;