npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ringcentral-typescript

v0.10.0

Published

RingCentral TypeScript SDK

Downloads

82

Readme

RingCentral TypeScript SDK

Build Status

This SDK is modelled after the RingCentral.NET SDK which is the most popular RingCentral SDK for static compiled languages.

Installation

yarn add ringcentral-typescript

Setup

Make a copy of .env.example and rename it to .env, then fill in the data appropriately.

In your project, require the sdk, then initialize and login

const RestClient = require('ringcentral-typescript').default

const rc = new RestClient({
    clientId: process.env.RINGCENTRAL_CLIENT_ID,
    clientSecret: process.env.RINGCENTRAL_CLIENT_SECRET,
    server: process.env.RINGCENTRAL_SERVER_URL,
    appName: "", //optional, if specified, it will be included in X-User-Agent header
    appVersion: "", //optional, if specified, it will be included in X-User-Agent header
    httpClient: "", //optional
    token: "", //optional
    handleRateLimit: false, //optional
    debugMode: false // optional
})

Sample code

Sample code for all the endpoints

You can also find lots of useful code snippets from the test cases.

Since this library is model after the RingCentral.NET SDK, you can also reference the samples in C#. It should be straightforward to translate C# code into TypeScript or JavaScript since this two SDKs are very similar.

Binary content downloading

Some sample code for binary content downloading may not work.

Because RingCentral is gradually migrating binary content to CDN such as media.ringcentral.com.

For example, to download the attachment of a fax:

// `message` is the fax message object
const r = await rc.get(message.attachments[0].uri, undefined, { responseType: 'arraybuffer' })
const content = r.data

The following does NOT work:

// `message` is the fax message object
const content = await rc.restapi().account().extension().messageStore(message.id).content(message.attachments[0].id).get()

Rule of thumb

But not all binary content has been migrated to CDN. If the resource to download provides you with a CDN uri, use that CDN uri. If there is no CDN uri provided, contruct the uri as the sample code shows.

Rate Limiting

The RingCentral Platform enforces rate limits to reduce network traffic and avoid DOS issues.

Here's a blog article discussing it in detail.

This SDK has the option of handling rate limits automatically by passing handleRateLimit: (boolean | number) into the constructor.

Options:

  • boolean
    • When set to true, this will pause requests for however many seconds are indicated in the rate-limit-window header (defaulting to 60 is there header is somehow missing)
  • number
    • When set to a number, this overrides using the header, or the default, and instead pauses for x seconds (where x is your number in the constructor)

For maintainers

Regenerate code using latest swagger spec

Get the latest swagger spec here and run:

yarn generate

Compile

yarn tsc

Test

yarn test

Todo

  • no more any type and {} type
  • convert code generator to TS
  • compare it with C# sdk and see what are missing
  • Create a WSG version of this SDK
  • Replace axios with @ringcentral/sdk ?
  • Make it an RingCentral official project
  • PubNub
    • if use @ringcentral/sdk, then no need to implement
  • Support events
    • if use @ringcentral/sdk, then no need to implement