IBM Cloud Event Notifications Node.js SDK 0.0.1
Node.js client library to interact with various Event Notifications APIs.
Disclaimer: this SDK is being released initially as a pre-release version.
Changes might occur which impact applications that use this SDK.
Table of Contents
Overview
The IBM Cloud Event Notifications Node.js SDK allows developers to programmatically interact with the Event Notifications service in IBM cloud.
Service Name | Import Path |
---|
Event-Notifications | @ibm-cloud/event-notifications-node-admin-sdk/event-notifications/v1 |
Prerequisites
- You need an IBM Cloud account.
- Node.js >=12: This SDK is tested with Node.js versions 12 and up. It may work on previous versions but this is not officially supported.
Installation
npm install @ibm-cloud/event-notifications-node-admin-sdk
Using the SDK
For general SDK usage information, please see
this link
Initialize SDK
Initialize the sdk to connect with your Event Notifications service instance.
import { EventNotificationsV1 } from '@ibm-cloud/event-notifications-node-admin-sdk/event-notifications/v1';
import { IamAuthenticator } from '@ibm-cloud/event-notifications-node-admin-sdk/auth';
const authenticator = new IamAuthenticator({
apikey: <apikey>,
});
const eventNotificationsService = EventNotificationsV1.newInstance({
authenticator,
serviceUrl: "https://" + region + ".event-notifications.cloud.ibm.com/event-notifications"
});
- region : Region of the Event Notifications Instance
Using the SDK
SDK Methods to consume
Source
List Sources
const params = {
instanceId: <instance-id>,
};
eventNotificationsService
.listSources(params)
.then((res) => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch((err) => {
console.warn(err);
});
Get Sources
const params = {
instanceId: <instance-id>,
id: <source-id>,
};
eventNotificationsService
.getSource(params)
.then((res) => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch((err) => {
console.warn(err);
});
Topics
Create Topic
const rulesModel = {
enabled: false,
event_type_filter: "$.notification_event_info.event_type == 'cert_manager'",
notification_filter: "$.notification.findings[0].severity == 'MODERATE'",
};
const topicUpdateSourcesItemModel = {
id: <source-id>,
rules: [rulesModel],
};
const params = {
instanceId: <instance-id>,
name: <topic-name>,
description: <topic-description>,
sources: [topicUpdateSourcesItemModel],
};
eventNotificationsService
.createTopic(params)
.then((res) => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch((err) => {
console.warn(err);
});
List Topics
const params = {
instanceId: <instance-id>,
};
eventNotificationsService
.listTopics(params)
.then((res) => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch((err) => {
console.warn(err);
});
Get Topic
const params = {
instanceId: <instance-id>,
id: <topic-id>,
};
eventNotificationsService
.getTopic(params)
.then((res) => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch((err) => {
console.warn(err);
});
Update Topic
const rulesModel = {
enabled: true,
event_type_filter: "$.notification_event_info.event_type == 'cert_manager'",
notification_filter: "$.notification.findings[0].severity == 'MODERATE'",
};
const topicUpdateSourcesItemModel = {
id: <source-id>,
rules: [rulesModel],
};
const params = {
instanceId: <instance-id>,
id: <topic-id>,
name: <topic-update-name>,
sources: [topicUpdateSourcesItemModel],
};
eventNotificationsService
.replaceTopic(params)
.then((res) => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch((err) => {
console.warn(err);
});
Delete Topic
const params = {
instanceId : <instance-id>,
id : <topic-id>,
}
eventNotificationsService
.deleteTopic(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
Destinations
Create Destination
const destinationConfigParamsModel = {
url: <destination-config-url>,
verb: <destination-config-verb>,
custom_headers: { <header-key>: <header-value> },
sensitive_headers: [<header-key>],
};
const destinationConfigModel = {
params: destinationConfigParamsModel,
};
const params = {
instanceId: <instance-id>,
name: <destination-name>,
type: <destination-type>,
description: <destination-description>,
config: destinationConfigModel,
};
eventNotificationsService.createDestination(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
List Destinations
const params = {
instanceId : <instance-id>,
}
eventNotificationsService.listDestinations(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
Get Destination
const params = {
instanceId : <instance-id>,
id : <destination-id>,
}
eventNotificationsService
.getDestination(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
Update Destination
const destinationConfigParamsModel = {
url: <destination-config-update-url>,
verb: <destination-config-update-verb>,
custom_headers: { <header-key>: <header-value> },
sensitive_headers: [<header-key>],
};
const destinationConfigModel = {
params: destinationConfigParamsModel,
};
const params = {
instanceId: <instance-id>,
id: <destination-id>,
name: <destination-update-name>,
description: <destination-update-description>,
config: destinationConfigModel,
};
eventNotificationsService.updateDestination(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
Delete Destination
const params = {
instanceId : <instance-id>,
id : <destination-id>,
}
eventNotificationsService
.deleteDestination(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
Subscriptions
Create Subscription
While Creating Subscription use any of one option from webhook, email or SMS
const subscriptionCreateAttributesModel = {
signing_enabled: false,
};
const params = {
instanceId: <instance-id>,
name: <subscription-name>,
destinationId: <destination-id>,
topicId: <topic-id>,
attributes: subscriptionCreateAttributesModel,
description: <subscription-description>,
};
eventNotificationsService
.createSubscription(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
List Subscriptions
const params = {
instanceId : <instance-id>,
}
eventNotificationsService
.listSubscriptions(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
Get Subscription
const params = {
instanceId : <instance-id>,
id : <subscription-id>,
}
eventNotificationsService.
getSubscription(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
Update Subscription
const subscriptionUpdateAttributesModel = {
signing_enabled: true,
};
const params = {
instanceId: <instance-id>,
id: <subscription-id>,
name: <subscription-update-name>,
description: <subscription-update-description>,
attributes: subscriptionUpdateAttributesModel,
};
eventNotificationsService
.updateSubscription(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
Delete Subscription
const params = {
instanceId : <instance-id>,
id : <subscription-id>,
}
eventNotificationsService
.deleteSubscription(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
Set Environment
Find [event_notifications.env.hide(https://github.com/IBM/event-notifications-node-admin-sdk/blob/main/event_notifications.env.hide) in the repo and rename it to event_notifications.env
. After that add the values for,
EVENT_NOTIFICATIONS_URL
- Add the Event Notifications service instance Url.EVENT_NOTIFICATIONS_APIKEY
- Add the Event Notifications service instance apikey.EVENT_NOTIFICATIONS_GUID
- Add the Event Notifications service instance GUID.
Optional
EVENT_NOTIFICATIONS_AUTH_URL
- Add the IAM url if you are using IBM test cloud.
Questions
If you are having difficulties using this SDK or have a question about the IBM Cloud services,
please ask a question at
Stack Overflow.
Issues
If you encounter an issue with the SDK, you are welcome to submit
a bug report.
Before that, please search for similar issues. It's possible someone has
already encountered this issue.
Open source @ IBM
Find more open source projects on the IBM Github Page
Contributing
See CONTRIBUTING.
License
This project is released under the Apache 2.0 license.
The license's full text can be found in
LICENSE.