@livello/nuts-nodejs

1.2.6 • Public • Published

Nuts API NodeJS Client

This repository holds a library written in NodeJS to help consume the Nuts API in order to access resources from the Livello platform, such as fridges, users, product items, transactions or payment methods.

This library perform queries against the API on behalf of users, authenticated using third party OAuth 2 providers, and therefore it is suitable to be used on client applications that cannot keep secrets.

Installation

You can install this package using NPM private git dependencies: npm install --save git+ssh://git@bitbucket.org:livello-smart-fridges/nuts-nodejs.git

Alternatively, you can pin to a specific version by appending #<version-name> to the git URL.
Note: You need to have SSH access to this repository prior to installing the package.

Usage

This client exposes authenticated access only, and hence it needs an identity to operate.
You can instantiate and API object in two different ways:

Authenticating a New User

To authenticate a specific user you can use the authenticate method, exposed statically. This method returns a promise, containing the API object ready to be used:

var NutsApi = require('nuts-nodejs');
var myApi;
NutsApi.authenticate(idToken, accessToken, provider).then(({ api, token }) => myApi = api);

where idToken and accessToken are those provider by the OAuth authentication provider, and provider is the key that identifies it (eg.: google).

Reusing an Existing Token

Alternatively, you can directly instantiate an API object using a JWT token that was previously generated by the API and stored accordingly:

var NutsApi = require('nuts-nodejs');
var api = new NutsApi(<jwt-token>);

Accessing Resources

All requests and calls to the API are executed and exposed using promises. Requests that fail to deserialize or respond with an error HTTP status code will cause the promise to fail. For example, to add a new payment method:

api.paymentMethods.create({source: 'src_1CAEAPKsKLCD8MyXqpAPteJ4'})
  .then((response) => console.log(response.body))
  .catch((error) => console.log(error.body));

Or, to obtain a list of fridges visible to the currently authenticated user:

api.fridges.list()
  .then((response) => console.log(response.body))
  .catch((error) => console.log(error.body));

Results: Response and Error

Successfully fulfiled promises return an object that contains the status code and the contents of the response. For the previous example, a successful call to the list of fridges yields the following response object:

{
    "status": 200,
	"body": [{
	    "id": 7,
        "created": "2018-03-09T19:37:48Z",
		"modified": "2018-03-13T14:09:04Z",
        "items": {
            "total": 5,
            "expired": 1
        },
		...
	},
	{...}]
}

Errorring requests can be catched as a failed promise, containing the expected error object. Prior to throwing, this object is appended a body that holds more detail about the cause of the failure.

Resources

Resources are exposed using modules attached to the API object. These modules conform to a similar structure and operation, by exposing CRUD-like methods (create, list, get, update, delete) that allow interaction with the with the corresponding resources.

The set of resources currently exposed in this client library is the following:

Resource Name  Path Available Methods
Fridges api.fridges list(), get(id), buy(id)
Current User api.me get(), update(userData), delete()
Transactions api.transactions list(), get(id), update(id, productIds), checkout(id)
Payment Methods   api.paymentMethods  create(paymentMethodData), list(), set_default(id), delete(id)

Readme

Keywords

none

Package Sidebar

Install

npm i @livello/nuts-nodejs

Weekly Downloads

0

Version

1.2.6

License

ISC

Unpacked Size

31.9 kB

Total Files

13

Last publish

Collaborators

  • fs
  • joseluisugia