# yggio-api

> exposes the yggio api

Latest version **1.4.1** (published 2018-10-08) · MIT license · 0 weekly downloads

## Install

```sh
npm install yggio-api
pnpm add yggio-api
yarn add yggio-api
bun add yggio-api
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.4.1 |
| Published | 2018-10-08 |
| First published | 2018-05-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 16.7 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Author | Sensative AB |
| Maintainers | sensative-user |
| Keywords | yggio, yggio-api |

## Links

- npm: https://www.npmjs.com/package/yggio-api
- Repository: https://gitlab.com/sensative/yggio-packages/yggio-api
- npm.io page: https://npm.io/package/yggio-api

## Dependencies (3)

- [lodash](https://npm.io/package/lodash.md) ^4.17.5
- [request](https://npm.io/package/request.md) ^2.85.0
- [request-promise](https://npm.io/package/request-promise.md) ^4.2.2

## Recent versions

- 1.4.1 (latest) — 2018-10-08
- 2.0.0-alpha.0 — 2018-10-02
- 1.4.0 — 2018-06-13
- 1.3.6 — 2018-06-13
- 1.2.2 — 2018-06-13
- 1.3.5 — 2018-06-13
- 1.3.4 — 2018-06-13
- 1.3.3 — 2018-05-22
- 1.3.2 — 2018-05-22
- 1.3.1 — 2018-05-22
- 1.3.0 — 2018-05-22
- 1.2.1 — 2018-05-16
- 1.2.0 — 2018-05-14

## README

## yggio-api: the public parts

yggio-api exposes the public api of yggio as a module. sets up the boilerplate stuff and is meant to be both a guide and aid, but is not in and of itself necessary.

### Usage

First, yggio-api needs to be initialized with config info (to know where to find yggio mainly)
```javascript
const yggioApi = require('yggio-api');
// rules engine and the yggio rest-api have different urls that need to be supplied
const yggioConfig = {
  rulesUrl: 'my-rules-url.com:3315',
  yggioUrl: '192.169.2.3:2003'
};
yggioApi.setYggioConfig(yggioConfig);
```
Once, the service provider has registered (yggio-subscriber does this stuff), we have the providerDetails necessary for oauth to refresh yggio access tokens (`storm_access_token`)
```javascript
yggioApi.initializeRefresh({
  providerDetails, // {token}
  // this callback MUST return a promise. The return value is NOT used
  userWasRefreshed: (originalUser, refreshedUser) => {
    // example of what you probably want to do depending upon the schema of your user
    originalUser['storm_access_token'] = refreshedUser['storm_access_token'];
    return originalUser.save();
  };
});
```
With valid `providerDetails`, and as long as a `userWasRefreshed` callback function is supplied, the storm_access_token automatically gets refreshed when necessary.

The following routes are available:
```javascript
const routes = {
  // provider specific functionality
  registerProvider,
  setLogo,
  subscribe,
  // device
  setStatus,
  getStatus,
  awaitStatus,
  getMe,
  logoutFromYggio,
  getNode,
  getNodes,
  getAccessibleNodes,
  createNode,
  updateNode,
  checkOAuthStatus,
  fetchOAuthClientNodes,
  // rules
  getRulesStates,
  setRulesState,
  getRule,
  getRules,
  executeRule,
  getScenarioTemplates,
  createScenario,
  getRulesConditions,
  updateRulesCondition,
  createRulesCondition,
  getRulesActions,
  createRulesAction,
  updateRulesAction,
  deleteRulesAction,
  createRule,
  deleteRule,
  updateRule,
  addRuleTrigger,
  addRuleEvent,
  getContacts,
  setContacts
};
// these routes all require as first argument a user object with the required parameters
const user = {
  storm_access_token,
  storm_refresh_token
};
```
**Warning: expect breaking changes between minor versions**

It is likely that some of the functionality will be changed/removed/renamed

### License
yggio-api is under the MIT license. See LICENSE file.

---
_Source: https://npm.io/package/yggio-api · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
