Skip to main content

Business Critical Services Operational Insights API SDK

SDK for the Business Critical Services (BCS) Operations Insights (OI) API

Example

from bcs_oi_api import BCSOIAPI
from bcs_oi_api.models import Device, SecurityAdvisory, SecurityAdvisoryBulletin, SecurityAdvisoryOutcome

bcs_oi_api = BCSOIAPI(
    client_id='client id',
    client_secret='client secret',
    region='us'
)

# Getting a generator for all discovered devices
devices = bcs_oi_api.get_output(model=Device)

# Building a dictionary with as key the device_id and the value the Device object for lookups
devices_dict = {device.device_id: device for device in devices}

# Getting a generator for all the Security Advisories
security_advisories = bcs_oi_api.get_output(model=SecurityAdvisory)

# Getting a generator for all the Security Advisory Bulletins
security_advisory_bulletins = bcs_oi_api.get_output(model=SecurityAdvisoryBulletin)

# Building a dictionary with as key the id of the bulletin and as value the bulletin itself for lookups
security_advisory_bulletins_dict = {bulletin.security_advisory_cold_id: bulletin for bulletin in
                                    security_advisory_bulletins}

# Listing devices which are vulnerable to security advisories with a critical impact rating
for advisory in security_advisories:
    if advisory.match_confidence == SecurityAdvisoryOutcome.VULNERABLE and \
            security_advisory_bulletins_dict[advisory.security_advisory_cold_id].security_impact_rating == 'Critical':
        print(
            f"Device \"{devices_dict[advisory.device_id].device_name}\" is vulnerable to "
            f"\"{security_advisory_bulletins_dict[advisory.security_advisory_cold_id].bulletin_title}\""
        )

Filtering & Masking Example

# Filtering - Inventory Devices

from bcs_oi_api import BCSOIAPI
from bcs_oi_api.models import DeviceFilter, Device, UIRDetailsFilter, UIRDetails

bcs_oi_api = BCSOIAPI(
    client_id='client id',
    client_secret='client secret',
    region='us'
)

filter_params = {
    "productFamily": [
        "Cisco ASR 9000 Series Aggregation Services Routers",
        "Cisco Catalyst 3850 Series Switches",
        "Cisco ASR 1000 Series Aggregation Services Routers",
    ],
}

filter_parameter = DeviceFilter.parse_obj(filter_params)
inventory_devices = bcs_oi_api.get_output(model=Device, filter_=filter_parameter)
for inventory_device in inventory_devices:
    print(inventory_device)


# Masking - UIR Details

filter_params = {
    "unidentifiedDeviceName": ["site2-asr-1"],
    "unidentifiedDeviceStatus": ["Recurring"],
}

fields = "unidentifiedDeviceName,unidentifiedDevicePlatform"
filter_parameter = UIRDetailsFilter.parse_obj(filter_params)
uir_details = bcs_oi_api.get_output(model=UIRDetails, filter_=filter_parameter, fields=fields)

for uir_detail in uir_details:
    print(uir_detail)
    # In the uir_detail response, only specified fields would be accessible.
    print(f"Unidentified Device Name : {uir_detail.unidentified_device_name}")
    print(f"Unidentified Device Platform : {uir_detail.unidentified_device_platform}")

Installation

Installing and upgrading is easy:

Install via PIP

$ pip install bcs-oi-api

Upgrading to the latest Version

$ pip install bcs-oi-api --upgrade

Questions, Support & Discussion

bcs-oi-api is a community developed and community supported project. Feedback, thoughts, questions, issues can be submitted using the issues page.

Contribution

bcs-oi-api is a community developed project. Code contributions are welcome via PRs!

Copyright (c) 2018-2021 Cisco and/or its affiliates.

Metadata

Release files for bcs-oi-api 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bcs-oi-api 1.1.1
File Size Uploaded
bcs-oi-api-1.1.1.tar.gz 14.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bcs-oi-api 1.1.1
File Interpreter ABI Platform
bcs_oi_api-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 34.5 kB

Release files / bcs-oi-api-1.1.1.tar.gz

Download URL bcs-oi-api-1.1.1.tar.gz
Size 14.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b3d0899b9d213885abb2f84b0c8afb0a1ccb3e8f645466f4d131795cdd6b5209
BLAKE2b-256 checksum
How to use checksums
e59b9c6a83fc7c91b8c4d05db1fd6139fbfd7d6ab535f6c831558ea9492794a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.5

Release files / bcs_oi_api-1.1.1-py3-none-any.whl

Download URL bcs_oi_api-1.1.1-py3-none-any.whl
Size 19.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4e5fb450d9515de4ed1f91f6f362cf337b66ccc5b306859afe8104980208a190
BLAKE2b-256 checksum
How to use checksums
4191d5dcf018b6d4630453b473613b382ad76ce9368022f7c0e0e13bde98bb29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.5

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page