npm package: @nabcellent/websms
Description: WebSMS API Library
Author: Nabcellent
Latest version: 3.0.3

# WebSMS Api

[![build status][build-badge]][build]
[![code coverage][coverage-badge]][coverage]

[![npm version][version-badge]][package]
[![bundle size][minzip-badge]][bundlephobia]
[![npm downloads][downloads-badge]][npmtrends]
[![apache license][license-badge]][license]

[build-badge]: https://img.shields.io/github/actions/workflow/status/nabcellent/websms/test.yml?branch=main&logo=github&style=flat-square
[build]: https://github.com/nabcellent/websms/actions?query=workflow%3Avalidate
[coverage-badge]: https://img.shields.io/codecov/c/github/nabcellent/websms.svg?token=RFFO0GXH7B&style=flat-square
[coverage]: https://codecov.io/gh/nabcellent/websms/
[version-badge]: https://img.shields.io/npm/v/@nabcellent/websms.svg?style=flat-square
[package]: https://www.npmjs.com/package/@nabcellent/websms
[minzip-badge]: https://img.shields.io/bundlephobia/minzip/@nabcellent/websms.svg?style=flat-square
[bundlephobia]: https://bundlephobia.com/result?p=@nabcellent/websms
[downloads-badge]: https://img.shields.io/npm/dm/@nabcellent/websms.svg?style=flat-square
[npmtrends]: https://www.npmtrends.com/nabcellent/websms
[license-badge]: https://img.shields.io/npm/l/@nabcellent/websms.svg?style=flat-square
[license]: https://github.com/nabcellent/websms/blob/main/LICENSE

This is a <i>Typescript</i> package that interfaces with the [WebSMS](https://websms.co.ke/) Api.
The API enables you to initiate mobile SMS notifications.

Check out their [api documentation](https://www.docs.onfonmedia.co.ke/).

## Documentation

### Installation

You can install the package via npm or yarn:
```bash
yarn add @nabcellent/websms
```
### Getting Started
Initialize the WebSMS class with your config.
```js
import { WebSMS, WebSMSConfig } from '@nabcellent/websms';

let config: WebSMSConfig = {
    accessKey: process.env.WEBSMS_ACCESS_KEY,
    apiKey   : process.env.WEBSMS_API_KEY,
    clientId : process.env.WEBSMS_CLIENT_ID,
    senderId : process.env.WEBSMS_SENDER_ID
};

const web = new WebSMS(config);
```

- ### SMS
Enables you to send text messages

#### 1. Send SMS
```js
const response = await web.sms.text('#WebSMSTest').to(254123456789).send()
    //  OR
const response = await web.sms.text('#WebSMSTest').to([254123456789]).send()

//  Expected responses
{
    code: 0,
    description: null,
    data: [
        {
            message_id: "7444f504-6760-43fd-9b40-2708da61d114",
            code: 0,
            description: "Success",
            phone: "254123456789",
            custom: ""
        },
        {
            message_id: "",
            code: 801,
            description: "Country not found in master data",
            phone: "89254736388405", //   Invalid phone number
            custom: ""
        }
    ]
}
```

#### 2. Schedule SMS
Provide a Moment or Date instance to the send method.
```js
const response = await web.sms.text('#WebSMSTest').to([254123456789]).send(moment().add(1, 'm'))
```
<small><i>PS: The date must be after current time.</i>🌚</small>

#### 3. Calculate SMS Cost
Provide the text message.
```js
const response = web.sms.cost('Hello World.')

//  Expected response(number)
0.3
```
---

- ### Account
Enables you to check the balance of your account

1. Account balance
```js
const response = await web.balance.fetch()

//  Expected response(number)
7.33
```
## Contributing

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

## Security

If you discover any security related issues, please email [nabcellent.dev@gmail.com](mailto:nabcellent.dev@gmail.com) instead of using the issue tracker.

## Credits

- [Nabcellent](https://github.com/Nabcellent)

[comment]: <> (- [All Contributors]&#40;../../contributors&#41;)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.