OCI SDK For TypeScript Is Now Available - Here's How To Use It In Your JavaScript Projects

June 4, 2020 | 3 minute read
Text Size 100%:

I have blogged quite a bit about our OCI Java SDK in the past. It's easy to use and a very intuitive and consistent SDK that can perform just about any possible task you can imagine when it comes to the Oracle Cloud. But I'm not just a Java developer. I use JavaScript quite a bit too on both the client and the server-side. In fact, when it comes to simple "one-off" scripts, let's be honest it is usually much quicker and easier to throw it together in JS than in Java. That's why I'm so happy to hear that our OCI SDK for TypeScript has been made generally available.

Note: Even though it's called the SDK for TypeScript, it can be used in any "vanilla" JavaScript project or TypeScript project on the server.

In this post I'm going to show you some examples of using the TypeScript SDK, but first let me share a few important links that you will want to bookmark if you'll be doing any work with it.

Important Links

Using The SDK With JavaScript On The Server

The TypeScript SDK can easily be used in a "vanilla" Node.JS application. To get started, check the examples linked above or create a simple Node project and install the SDK with: 

npm install oci-sdk

Now pull in some dependencies. In this example, we'll use the Object Storage and the Core modules (see the full list of services supported) so we'll need to pull in oci-objectstorage and oci-core to make calls with the necessary clients. We'll also need oci-common and we'll pull in util to prettify our output later on.

Next, set a few variables to sore our configuration file details and our compartmentId and tenancyName:

We'll need to create an instance of an authentication provider that we'll have to pass to the clients when we construct them. For this, we'll use a ConfigFileAuthenticationDetailsProvider from the oci-common module.

Now we can create an instance of the ComputeClient, passing our authProvider:

Now we can construct a listInstancesRequest and call listInstances on the client. Since we're using plain JavaScript, the listInstancesRequest will just be a simple object containing keys relating to the expected parameters. The call to the client will return a Promise, so we can get our results in the then() method, collect our instance ID and display name, and log those values.

If we save and run this script, we'll get output similar to the following:

The object storage module follows the same patterns, so it's simple to construct an objectStorageClient and perform operations like listBuckets and listObjects.

If Promises aren't your thing, you can use async/await:

Using The SDK With TypeScript On The Server

Another option with the TypeScript SDK is to use it directly with TypeScript scripts. This gives you the added benefit of explicitly typed objects which means your IDE will provide you with plenty of insight into the SDK. Here's an example of using a TypeScript file to grab the namespace from the object storage client. It looks mostly the same, but note the addition of the types for the provider, client, request and response objects.


In this post, we looked at the brand new TypeScript SDK for OCI. We learned how to construct authentication providers, module clients, and requests and how to send those requests to the OCI API via the client instances. If you have any questions or feedback, please leave a comment below or refer to the documentation or GitHub links above. Otherwise, get started integrating this into your Node projects today!

Photo by Irvan Smith on Unsplash

Todd Sharp

Todd Sharp is a developer advocate for Oracle focusing on Oracle Cloud. He has worked with dynamic JVM languages and various JavaScript frameworks for more than 14 years, originally with ColdFusion and more recently with Java/Groovy/Grails on the server side. He lives in the Appalachian mountains of north Georgia (in the United States) with his wife and two children.

Previous Post

Mastering Maven: Optional Dependencies

Andres Almiray | 5 min read

Next Post

Mastering Maven: the DependencyManagement block

Andres Almiray | 5 min read