@flowio/node-sdk

Node apidoc clients

Stats

StarsIssuesVersionUpdatedCreatedSize
@flowio/node-sdk
2101.1.82 years ago5 years agoMinified + gzip package size for @flowio/node-sdk in KB

Readme

Build Status

node-sdk

Node SDK for the Flow Commerce API.

Installation

npm install @flowio/node-sdk

Documentation / API

The official documentation can be found at docs.flow.io. This will cover in detail all of the resources of the api.

See API Resources for the documentation of the Node SDK API and its functions.

Getting Started

Authentication

Visit console.flow.io to create an account and generate an API key.

Making an authenticated request

Most requests to api.flow.io require Basic Authentication. Here is how to make and authenticated request with JavaScript.

import client from '@flowio/node-sdk';

const token = process.env.FLOW_TOKEN;
const api = client(token);

api.organizations.get().then((response) => {
  switch(response.status) {
    case 200:
      response.result.map((organization) =>
        console.log(`Found Organization: ${organization.name}`))
    case 401:
      throw new Error('Was not authorized to get organizations!');
    default:
      throw new Error(`Response code[${response.status}] not handled!`);
  }
});

Anatomy

Let's break down the example above!

const token = process.env.FLOW_IO_API_TOKEN;
const api = client(token);

You need two things to make a request to the api. An instance of the client and an authorization token. We recommend not storing your token in code, but referencing it via an environment variable.

api.organizations.get()

Next the syntax for the client is client.{resource}.{method}. You can find a list of resources and their methods here. The parameters for each resource method can vary, so be sure to pay attention to the docs to see what is required.

Whatever the parameters for a method, it always ends with an options parameter. fetch is used under the hood, so anything you add to the options parameter will be forwarded to the underlying node-fetch implementation. The following are the most common options:

option Type Description
params Object An object of paramName:paramValue used as query parameters in the request.
body string A JSON string representation of the body, e.g, JSON.stringify(model_form).
).then((response) => {
  switch(response.status) {
    case 200:
      response.result.map((organization) =>
        console.log(`Found Organization: ${organization.name}`))
    case 401:
      throw new Error('Was not authorized to get organizations!');
    default:
      throw new Error(`Response code[${response.status}] not handled!`);
  }
});

Each method of the SDK returns a Promise of the response. The response will contain two properties: status and result. response.status is the HTTP status code of the response. response.result contains the data (if any) returned by the api. At Flow we feel it is critical to handle every known response from an API to prevent unexpected behavior. We also do not want to make assumptions on how you may wish to handle those responses. The pattern we recommend adopting is to explicitly handle each response code that is documented in the API.

Common HTTP Response Codes

Code Description
200 HTTP response completed successfully. Common with GET, PUT
201 HTTP response completed successfully and a resource was created. Common with POST
204 HTTP response completed successfully and there is no content to return. Common with DELETE
404 Resource not found. Common with GET, PUT, and DELETE (when specifying :id of resource)
422 Validation error of some kind. Body will be a list of type error with specific details

Getting Help

We are in the process of setting up a slack channel. In the interim, please feel free to open an issue on this github repository.

Development / Release

See DEVELOPER.

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.