Skip to main content

Python client library for IBM Blockchain Platform

Project description

Blockchain Python SDK/Module

Python client library to use the IBM Cloud Blockchain Service.

This module will allow you to use native py functions to leverage the same functionality seen in the IBP APIs

Table of Contents

Overview

The IBM Cloud Blockchain Python SDK allows developers to programmatically interact with the IBM Cloud Blockchain service.

This repository is generated from an OpenAPI file that describes all available APIs. It is recommended to read through the IBP API docs to see the list of capabilities. Any issues with this SDK can be opened here or against the IBM Blockchain Platform service through IBM Cloud support.

Prerequisites

  • An IBM Cloud account.
  • An IBM Blockchain Platform Service instance
  • An IAM API key to allow the SDK to access your service instance. Create an account level api key here (alternatively you can create a service instance level api key from the IBM cloud UI).
  • An installation of Python (version 3) on your local machine.

Installation

Use this command to download and install the Blockchain Python SDK project. Once this is done your Python application will be able to use it:

pip install --upgrade ibm_cloud_sdk_core
pip install --upgrade ibp-python-sdk

Explore the SDK

This module is generated from an OpenAPI (swagger) file. The same file populated our IBP APIs documentation. To find desired functionality start by browsing the IBP APIs documentation. Then find the corresponding python example to the right of the api documentation.

Alternatively you could manually browse the SDK's main file:

Using the SDK

This section provides general information on how to use the services contained in this SDK.

Constructing service clients

Start by requiring the IBP Python SDK and then creating a client. Here's an example of how to construct an instance:

from ibp_python_sdk import BlockchainV3, IAMAuthenticator, ApiException

# create an authenticator - see more examples below
authenticator = IAMAuthenticator(
    apikey='{API-Key}',
)

# Create client from the "BlockchainV3" class
client = BlockchainV3(authenticator=authenticator)
client.set_service_url('https://{API-Endpoint}')


# Service operations can now be called using the "client" variable.

Authentication

Blockchain services use token-based Identity and Access Management (IAM) authentication.

IAM authentication uses an API key to obtain an access token, which is then used to authenticate each API request. Access tokens are valid for a limited amount of time and must be regenerated.

To provide credentials to the SDK, you supply either an IAM service API key or an access token:

  • Specify the IAM API key to have the SDK manage the lifecycle of the access token. The SDK requests an access token, ensures that the access token is valid, and refreshes it when necessary.
  • Specify the access token if you want to manage the lifecycle yourself. For details, see Authenticating with IAM tokens.
Examples:
  • Supplying the IAM API key and letting the SDK manage the access token for you:
# Example - letting the SDK manage the IAM access token

# imports
from ibp_python_sdk import BlockchainV3, IAMAuthenticator, ApiException

# Create an authenticator
authenticator = IAMAuthenticator(
	apikey='{API-Key}'
)

# Create client from the "BlockchainV3" class
client = BlockchainV3(authenticator=authenticator)
client.set_service_url('https://{API-Endpoint}')
  • Supplying the access token (a bearer token) and managing it yourself:
# Example - manage the IAM access token myself

# imports
from ibp_python_sdk import BlockchainV3, IAMAuthenticator, ApiException

# Create an authenticator
authenticator = IAMAuthenticator(
	bearertoken: '{my IAM access token}'
)

# Create client from the "BlockchainV3" class
client = BlockchainV3(authenticator=authenticator)
client.set_service_url('https://{API-Endpoint}')

...

# Later when the access token expires, the application must refresh the access token,
# then set the new access token on the authenticator.
# Subsequent request invocations will include the new access token.
authenticator.bearertoken = # new access token 

For more information on authentication, including the full set of authentication schemes supported by the underlying Python Core library, see this page.

Receiving operation responses

Each service method (operation) will return the following values:

  • response.result - An operation-specific result (if the operation is defined as returning a result).
  • response.status_code - the HTTP status code returned in the response message
  • response.headers - the HTTP headers returned in the response message
Example:
  1. Here's an example of calling the GetComponent operation:
# Create an authenticator
authenticator = IAMAuthenticator(
    apikey: '{API-Key}',
)

# Create client from the "BlockchainV3" class
client = BlockchainV3(authenticator=authenticator)
client.set_service_url('https://{API-Endpoint}')

# Get data for component
try:
    response = client.get_component(id='{Component-ID}')
    print(f'Server status code: {response.status_code}')
    print(f'response:\n {response.result}')
    # handle good response here
except ApiException as e:
    print(f'error status code: {e.code}')
    print(f'error response: {e.message}')
    # handle error here

Error Handling

In the case of an error response from the server endpoint, the Blockchain Python SDK will do the following:

  1. The service method (operation) will throw an ApiException error. This e object will contain the error message retrieved from the HTTP response if possible, or a generic error message otherwise.
  2. The e.message field will contain the (response if the operation returned a response).
  3. The e.code field will contain the HTTP response code.

Generation

This is a note for developers of this repository on how to rebuild the SDK.

  1. download the latest sdk generator release (should see the java file lib/openapi-sdkgen.jar)
  2. clone/download the IBP OpenAPI file
  3. build command w/o shell:
cd code/openapi-sdkgen
java -jar C:/code/openapi-sdkgen/lib/openapi-sdkgen-3.19.0.jar generate -g ibm-python --additional-properties initialize=true -i C:/code/cloud-api-docs/ibp.yaml -o C:/code/openapi-sdkgen/node_build --apiref C:/code/cloud-api-docs/apiref-python.json && cp -r C:/code/openapi-sdkgen/node_build/blockchain C:/code/ibp-python-sdk && cp -r C:/code/openapi-sdkgen/node_build/test C:/code/ibp-python-sdk
// inspect the output files in make a PR to this repo if they look okay

License

The IBM Cloud Blockchain Python SDK is released under the Apache 2.0 license. The license's full text can be found in LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ibp-python-sdk-0.1.2.tar.gz (90.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ibp_python_sdk-0.1.2-py3-none-any.whl (92.5 kB view details)

Uploaded Python 3

File details

Details for the file ibp-python-sdk-0.1.2.tar.gz.

File metadata

  • Download URL: ibp-python-sdk-0.1.2.tar.gz
  • Upload date:
  • Size: 90.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.8

File hashes

Hashes for ibp-python-sdk-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e4818fce06f43318ac2d3fb77dd29abb00ae2b644537c314f4976a8aae797873
MD5 35e8bb00b7fd59317c673ed5d8163712
BLAKE2b-256 c8692afc3120f6d1b232c6238f01590bfaa35f9acd79da850a3ac799c8b96550

See more details on using hashes here.

File details

Details for the file ibp_python_sdk-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: ibp_python_sdk-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 92.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.8

File hashes

Hashes for ibp_python_sdk-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ef9402e0c1d631a38cfa172e54bbfb7f99f599a9b35308e436041ddaa481cac1
MD5 24edab61e88112412368d19970aeac16
BLAKE2b-256 c7efa8501cba3cd4a1a0622062ffd461099df43b6831c8d73ce02991629575de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page