What is ibm-cloud-sdk-core?
The ibm-cloud-sdk-core npm package provides core functionality for IBM Cloud SDKs, including authentication, request handling, and utility functions. It is used as a foundational library for building and interacting with IBM Cloud services.
What are ibm-cloud-sdk-core's main functionalities?
Authentication
The package provides various authenticators, such as IAM, to handle authentication with IBM Cloud services. This code sample demonstrates how to create an IAM authenticator using an API key.
const { IamAuthenticator } = require('ibm-cloud-sdk-core');
const authenticator = new IamAuthenticator({ apikey: 'your-iam-api-key' });
Request Handling
The package provides a BaseService class to facilitate making HTTP requests to IBM Cloud services. This code sample shows how to extend BaseService to create a custom service with a method that makes a GET request.
const { BaseService } = require('ibm-cloud-sdk-core');
class MyService extends BaseService {
constructor(options) {
super(options);
}
myMethod() {
const parameters = {
options: {
url: '/v1/resource',
method: 'GET',
},
defaultOptions: this.baseOptions,
};
return this.createRequest(parameters);
}
}
Utility Functions
The package includes utility functions like getSdkHeaders to generate standard headers for SDK requests. This code sample demonstrates how to use getSdkHeaders to create headers for a specific service operation.
const { getSdkHeaders } = require('ibm-cloud-sdk-core');
const headers = getSdkHeaders('service-name', 'service-version', 'operation-id');
Other packages similar to ibm-cloud-sdk-core
aws-sdk
The aws-sdk package is the official SDK for AWS services, providing similar functionalities such as authentication, request handling, and utility functions for interacting with AWS services. It is comparable to ibm-cloud-sdk-core in terms of providing foundational support for cloud service interactions, but it is specific to AWS.
google-auth-library
The google-auth-library package provides authentication support for Google Cloud services. It offers similar authentication functionalities as ibm-cloud-sdk-core but is tailored for Google Cloud's authentication mechanisms.
azure-sdk-for-js
The azure-sdk-for-js is a collection of libraries for interacting with Azure services. It provides similar core functionalities like authentication and request handling, akin to ibm-cloud-sdk-core, but is designed for use with Microsoft Azure services.

IBM Node.js SDK Core
This project contains core functionality required by Node.js code generated by the IBM Cloud OpenAPI SDK Generator
(openapi-sdkgen).
Installation
`npm install ibm-cloud-sdk-core`
Prerequisites
- Node.js version 18 or newer
Usage
This package exports a single object containing a number of modules as top level properties.
Example:
import { BaseService } from 'ibm-cloud-sdk-core';
class YourSDK extends BaseService { ... }
Authentication
The node-sdk-core project supports the following types of authentication:
- Basic Authentication
- Bearer Token Authentication
- Identity and Access Management (IAM) Authentication (grant type: apikey)
- Identity and Access Management (IAM) Authentication (grant type: assume)
- Container Authentication
- VPC Instance Authentication
- Cloud Pak for Data Authentication
- No Authentication (for testing)
There are two ways to create an authenticator:
- Creating an instance and providing credentials programmatically
- Using the
getAuthenticatorFromEnvironment
function to create an authenticator from externally-provided configuration
For more information about the various authentication types and how to use them with your services, click here.
Examples
Programmatic
import { IamAuthenticator } from 'ibm-cloud-sdk-core';
const authenticator = new IamAuthenticator({
apikey: '{apikey}',
});
External configuration
import { getAuthenticatorFromEnvironment } from 'ibm-cloud-sdk-core';
const iamAuthenticator = getAuthenticatorFromEnvironment('my-service');
Logging
This package uses debug for logging.
- Logging is disabled by default.
- Logging has been configured to use log levels which are assumed to be numerically ascending from most important to least important.
- In order to see the log output, set the environment variable
DEBUG
including the desired log level.
DEBUG=ibm-cloud-sdk-core:error
enables error logsDEBUG=ibm-cloud-sdk-core:warning
enables warning logs and belowDEBUG=ibm-cloud-sdk-core:info
enables info logs and belowDEBUG=ibm-cloud-sdk-core:verbose
enables verbose logs and belowDEBUG=ibm-cloud-sdk-core:debug
enables debug logs and below
To see the output from all of the debugging levels you can use:
DEBUG=ibm-cloud-sdk-core*
The debug logger can be configured to be used for more than one library. For example, you can set a comma-separated string:
DEBUG=ibm-cloud-sdk-core:debug,other-lib:debug
Cookie Jar Support
By default, cookies are not supported in the SDK requests. If your SDK would benefit from this functionality, simply edit your code to instantiate a cookie jar (or instruct your users to do so) and pass it in the object containing configuration options to the BaseService
class, as shown below. If the Boolean value true
is given for the jar
field, the SDK core will create a default instance of a Tough Cookie.
import tough = require('tough-cookie');
class MyClass extends BaseService {
constructor(options: MyOptions) {
options.jar = new tough.CookieJar();
super(options);
}
}
Issues
If you encounter an issue with this project, you are welcome to submit a bug report.
Before opening a new issue, please search for similar issues. It's possible that someone has already reported it.
Tests
Run all test suites:
npm test
Contributing
See CONTRIBUTING.
License
This library is licensed under Apache 2.0. Full license text is
available in LICENSE.