Python server SDK for IBM Cloud Event Notifications service
Project description
IBM Cloud Event Notifications Python Admin SDK 0.1.4
Python client library to interact with various IBM Cloud Event Notifications APIs.
Table of Contents
- Overview
- Prerequisites
- Installation
- Initialize SDK
- Using the SDK
- Set Environment
- Questions
- Issues
- Open source @ IBM
- Contributing
- License
Overview
The IBM Cloud Event Notifications Python SDK allows developers to programmatically interact with Event Notifications service in IBM cloud.
Service Name | Module Name | Imported Class Name |
---|---|---|
Event Notifications Service | ibm_eventnotifications | EventNotificationsV1 |
Prerequisites
- An IBM Cloud account.
- An Event Notifications Instance
- Python 3.6 or above.
Installation
To install, use pip or easy_install:
pip install --upgrade "ibm_eventnotifications>=0.1.4"
or
easy_install --upgrade "ibm_eventnotifications>=0.1.4"
Initialize SDK
Initialize the sdk to connect with your Event Notifications service instance.
from ibm_eventnotifications.event_notifications_v1 import EventNotificationsV1
from ibm_eventnotifications.send_notifications import *
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
# Create an IAM authenticator.
authenticator = IAMAuthenticator('<iam-api-key>')
# Construct the service client.
event_notifications_service = EventNotificationsV1(authenticator=authenticator)
# Set our custom service URL (optional)
event_notifications_service.set_service_url('https://' + region + '.event-notifications.cloud.ibm.com/event-notifications')
- region : Region of the Event Notifications Instance
Using the SDK
SDK Methods to consume
Source
Create Source
source_response = event_notifications_service.create_sources(
<instance-id>, # Event notifications service instance GUID
name=<source-name>,
description=<source-description>,
enabled=False
).get_result()
print(json.dumps(source_response, indent=2))
List Sources
source_list = event_notifications_service.list_sources(
<instance-id>, # Event notifications service instance GUID
).get_result()
print(json.dumps(source_list, indent=2))
Get Source
source = event_notifications_service.get_source(
<instance-id>, # Event notifications service instance GUID
id=<source-id>, # Event notifications service instance Source ID
).get_result()
print(json.dumps(source, indent=2))
Update Source
source = event_notifications_service.update_source(
<instance-id>, # Event notifications service instance GUID
id=<source-id>, # Event notifications service instance Source ID
name=<source-name>,
description=<source-description>,
enabled=True
).get_result()
print(json.dumps(source, indent=2))
Delete Source
response = event_notifications_service.delete_source(
<instance-id>, # Event notifications service instance GUID
id=<source-id>, # Event notifications service instance Source ID
)
Topics
Create Topic
rules_model = {
'enabled': False,
'event_type_filter': '$.notification_event_info.event_type == \'cert_manager\'', #Add your event type filter here.
'notification_filter': '$.notification.findings[0].severity == \'MODERATE\'', #Add your notification filter here.
}
# Construct a dict representation of a TopicUpdateSourcesItem model
topic_update_sources_item_model = {
'id': <source_id>,
'rules': [rules_model],
}
topic_response = event_notifications_service.create_topic(
<instance_id>,
name=<topic-name>,
description=<topic-description>,
sources=[topic_update_sources_item_model]
)
print(json.dumps(topic_response, indent=2))
List Topics
topic_list = event_notifications_service.list_topics(
<instance-id>,
).get_result()
print(json.dumps(topic_list, indent=2))
Get Topic
topic = event_notifications_service.get_topic(
<instance-id>, # Event notifications service instance GUID
id=<topic-id>, # Event notifications service instance Topic ID
).get_result()
print(json.dumps(topic, indent=2))
Update Topic
rules_model = {
'enabled': True,
'event_type_filter': '$.notification_event_info.event_type == \'core_cert_manager\'',
'notification_filter': '$.notification.findings[0].severity == \'SEVERE\'',
}
# Construct a dict representation of a TopicUpdateSourcesItem model
topic_update_sources_item_model = {
'id': <source-id>, # Event notifications service instance Source ID
'rules': [rules_model],
}
description = "Updated Topic for GCM notifications"
name = 'Updated Admin Topic Compliance'
topic = event_notifications_service.replace_topic(
<instance-id>, # Event notifications service instance GUID
id=<topic-id>, # Event notifications service instance Topic ID
name=<topic-update-name> # Event notifications service instance Topic Name
description=<topic-update-description> # Event notifications service instance Topic description
sources=[topic_update_sources_item_model]
)
print(json.dumps(topic, indent=2))
rulesModel := &eventnotificationsv1.Rules{
Enabled: core.BoolPtr(true),
EventTypeFilter: core.StringPtr("$.notification_event_info.event_type == 'core_cert_manager'"), # Add your event type filter here.
NotificationFilter: core.StringPtr("$.notification.findings[0].severity == 'SEVERE'"), # Add your notification filter here.
}
Delete Topic
response = event_notifications_service.delete_topic(
<instance-id>,
id=<topic-id>,
)
Destinations
Create Destination
destination_config_params_model = {
'url': '<destination-config-url>',
'verb': '<destination-config-verb>',
'custom_headers': {'<header-key>': '<header-value>', },
'sensitive_headers': ['<header-key>'],
}
# Construct a dict representation of a DestinationConfig model
destination_config_model = {
'params': destination_config_params_model,
}
destination = event_notifications_service.create_destination(
<instance-id>,
<destination-name>,
type=<destination-type>,
description=description,
config=destination_config_model
).get_result()
print(json.dumps(destination, indent=2))
List Destinations
destination_list = event_notifications_service.list_destinations(
<instance-id>,
).get_result()
print(json.dumps(destination_list, indent=2))
Get Destination
destination = event_notifications_service.get_destination(
<instance-id>, # Event notifications service instance GUID
id=<destination-id>, # Event notifications service instance Destination ID
).get_result()
print(json.dumps(destination, indent=2))
Update Destination
# Construct a dict representation of a DestinationConfigParamsWebhookDestinationConfig model
destination_config_params_model = {
'url': '<destination-config-update-url>',
'verb': '<destination-config-update-verb>',
'sensitive_headers': ['<header-key>'],
}
# Construct a dict representation of a DestinationConfig model
destination_config_model = {
'params': destination_config_params_model,
}
destination = event_notifications_service.update_destination(
<instance-id>, # Event notifications service instance GUID
id=<destination-id>, # Event notifications service instance Destination ID
name=<destination-update-name>,
description=<destination-update-description>,
config=destination_config_model
).get_result()
print(json.dumps(destination, indent=2))
Delete Destination
response = event_notifications_service.delete_destination(
<instance-id>, # Event notifications service instance GUID
id=<destination-id>, # Event notifications service instance Destination ID
)
Push Destination APIs
Create Destination tag subscription
tag_subscription = _event_notifications_service.create_tags_subscription(
<instance-id>, # Event notifications service instance GUID
<destination-id>, # Event notifications service Destintaion ID
<device_id>, # Event notifications service Device ID
<tag_name> # Event notifications service Tag Name
).get_result()
print(json.dumps(tag_subscription, indent=2))
List Destination tag subscription
subscription = _event_notifications_service.list_tags_subscription(
<instance-id>, # Event notifications service instance GUID
<destination-id> # Event notifications service Destintaion ID
).get_result()
print(json.dumps(subscription, indent=2))
List Destination device tag subscriptions
all_subscription_for_device = _event_notifications_service.get_tags_subscriptions_device(
<instance-id>, # Event notifications service instance GUID
<destination-id>, # Event notifications service Destintaion ID
<device_id>, # Event notifications service Device ID
).get_result()
print(json.dumps(all_subscription_for_device, indent=2))
Get Device Count
get_deviceCount_response = _event_notifications_service.get_device_count(
<instance-id>, # Event notifications service instance GUID
<destination-id>, # Event notifications service Destintaion ID
).get_result()
print(json.dumps(get_deviceCount_response, indent=2))
Delete Destination device tag subscription
response = _event_notifications_service.delete_tags_subscription(
<instance-id>, # Event notifications service instance GUID
<destination-id>, # Event notifications service Destintaion ID
<device_id>, # Event notifications service Device ID
<tag_name> # Event notifications service Tag Name
).get_result()
print(json.dumps(response, indent=2))
Subscriptions
Create Subscription
#`While Creating Subscription use any of one option from webhook, or email`
subscription_create_attributes_model = {
'signing_enabled': False,
}
subscription = event_notifications_service.create_subscription(
<instance-id>, # Event notifications service instance GUID
name,
<destination-id>, # Event notifications service instance Destination ID
<topic-id> # Event notifications service instance Topic ID
attributes=subscription_create_attributes_model,
description=<subscription-description>
).get_result()
print(json.dumps(subscription, indent=2))
List Subscriptions
subscription_list = event_notifications_service.list_subscriptions(
<instance-id>, # Event notifications service instance GUID
).get_result()
print(json.dumps(subscription_list, indent=2))
Get Subscription
subscription = event_notifications_service.get_subscription(
<instance-id>, # Event notifications service instance GUID
id=<subscription-id>, # Event notifications service instance Subscription ID
).get_result()
print(json.dumps(subscription, indent=2))
Update Subscription
subscription_update_attributes_model = {
'signing_enabled': True,
}
subscription = event_notifications_service.update_subscription(
<instance-id>, # Event notifications service instance GUID
id=<subscription-id>, # Event notifications service instance Subscription ID
name=<subscription-update-name>,
description=<subscription-update-description>,
attributes=subscription_update_attributes_model
).get_result()
print(json.dumps(subscription, indent=2))
Delete Subscription
response = event_notifications_service.delete_subscription(
<instance-id>, # Event notifications service instance GUID
id=<subscription-id>, # Event notifications service instance Subscriptions ID
)
Send Notifications
notification_devices_model = {
'fcm_devices': ['<fcm-device-ids>'],
'apns_devices': ['<apns-device-ids>'],
'user_ids': ['<user-ids>'],
'tags': ['<tag-names>'],
'platforms': ['<device-platforms>'],
}
notification_apns_body_model = {
"aps": {
"alert": "<notification-message>",
"badge": 5,
},
}
notification_fcm_body_model = {
"notification": {
"title": "<notification-title>",
"body": "<notification-message>",
},
}
message_apns_headers = {
"apns-collapse-id": "<apns-apns-collapse-id-value>",
}
notificationSafariBodymodel = {
'saf': {
'alert': 'Game Request',
'badge': 5,
},
}
notification_id := "<notification-id>"
notification_severity := "<notification-severity>"
type_value := "<notification-type>"
notifications_source := "<notification-source>"
notification_response = event_notifications_service.send_notifications(
instance_id,
ce_ibmenseverity=notification_severity,
ce_id=notification_id,
ce_source=notifications_source,
ce_ibmensourceid=source_id,
ce_type=type_value,
body={},
ce_time='2019-01-01T12:00:00.000Z',
ce_ibmenpushto=json.dumps(notification_devices_model),
ce_ibmenfcmbody=json.dumps(notification_fcm_body_model),
ce_ibmenapnsbody=json.dumps(notification_apns_body_model),
ce_ibmenapnsheaders=json.dumps(message_apns_headers),
ce_ibmensafaribody=json.dumps(notificationSafariBodymodel),
ce_specversion='1.0'
).get_result()
Send Notifications Variables
- ce_ibmenpushto - Set up the the push notifications tragets.
- user_ids (Array of String) - Send notification to the specified userIds.
- fcm_devices (Array of String) - Send notification to the list of specified Android devices.
- fcm_devices (Array of String) - Send notification to the list of specified iOS devices.
- _devices (Array of String) - Send notification to the list of specified Chrome devices.
- firefox_devices (Array of String) - Send notification to the list of specified Firefox devices.
- tags (Array of String) - Send notification to the devices that have subscribed to any of these tags.
- platforms (Array of String) - Send notification to the devices of the specified platforms.
- Pass 'G' for google (Android) devices.
- Pass 'A' for iOS devices.
- Pass 'WEB_FIREFOX' for Firefox browser.
- Pass 'WEB_CHROME' for Chrome browser.
- Event Notifications SendNotificationsOptions - Event Notifications Send Notifications method.
- InstanceID (String) - Event Notifications instance AppGUID.
- ce_ibmenseverity (String) - Severity for the notifications. Some sources can have the concept of an Event severity. Hence a handy way is provided to specify a severity of the event.
- ce_id (String) - A unique identifier that identifies each event. source+id must be unique. The backend should be able to uniquely track this id in logs and other records. Send unique ID for each send notification. Same ID can be sent in case of failure of send notification. source+id will be logged in IBM Cloud Logging service. Using this combination we will be able to trace the event movement from one system to another and will aid in debugging and tracing.
- ce_source (String) - Source of the notifications. This is the identifier of the event producer. A way to uniquely identify the source of the event. For IBM Cloud services this is the crn of the service instance producing the events. For API sources this can be something the event producer backend can uniquely identify itself with.
- ce_ibmensourceid (String) - This is the ID of the source created in EN. This is available in the EN UI in the "Sources" section.
- ce_type (String) - This describes the type of event. It is of the form : This type is defined by the producer. The event type name has to be prefixed with the reverse DNS names so the event type is uniquely identified. The same event type can be produced by 2 different sources. It is highly recommended to use hyphen - as a separator instead of _.
- ce_time (String) - Time of the notifications. UTC time stamp when the event occurred. Must be in the RFC 3339 format.
- ce_ibmenpushto (string) - Targets for the FCM notifications. This contains details about the destination where you want to send push notification. This attribute is mandatory for successful delivery from an Android FCM or APNS destination.
- ce_ibmenfcmbody (string) - Set payload string specific to Android platform [Refer this FCM official link].
- ce_ibmenapnsbody (string) - Set payload string specific to iOS platform [Refer this APNs official doc link].
- ce_ibmensafaribody (string) - Set payload string specific to safari platform [Refer this Safari official doc link].
- ce_ibmenapnsheaders (string) - Set headers required for the APNs message [Refer this APNs official link(Table 1 Header fields for a POST request)]
- ce_ibmenchromebody (string) - Message body for the Chrome notifications. Refer this official documentation for more.
- ce_ibmenfirefoxbody (string) - Message body for the Firefox notifications. Refer this official documentation for more.
- ce_ibmenchromeheaders (string) - Headers for the Chrome notifications. Refer this official documentation for more.
- ce_ibmenfirefoxheaders (string) - Headers for the Firefox notifications. Refer this official documentation for more.
- ce_specversion (String) - Spec version of the Event Notifications. Default value is
1.0
.
Set Environment
Find event_notifications_v1.env.hide
in the repo and rename it to event_notifications_v1.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.EVENT_NOTIFICATIONS_FCM_KEY
- Add firebase server key for Android FCM destination.EVENT_NOTIFICATIONS_FCM_ID
- Add firebase sender Id for Android FCM destination.
Questions
If you are having difficulties using this SDK or have a question about the IBM Cloud services, please ask a question Stack Overflow.
Issues
If you encounter an issue with the project, you are welcome to submit a bug report. Before that, please search for similar issues. It's possible that someone has already reported the problem.
Open source @ IBM
Find more open source projects on the IBM Github Page
Contributing
See CONTRIBUTING.md.
License
This SDK is released under the Apache 2.0 license. The license's full text can be found in LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for ibm-eventnotifications-0.1.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7615a14d8049e389fbf38a897808425d5723597600405c98900b1d3c4cae7b0 |
|
MD5 | 7d3c4812e1e1f3a0b355bef3628e91f7 |
|
BLAKE2b-256 | f48042ca4c8bc57e50c272114d93f05143ae43d2df0462d28f837653fed896e8 |